package main
import (
"fmt"
"github.com/PuerkitoBio/goquery"
"log"
"net/http"
)
func main() {
// 设置代理服务器
proxyURL, _ := http.NewUrl("http://代理服务器IP:端口")
http.DefaultTransport.(*http.Transport).Proxy = http.ProxyURL(proxyURL)
// 设置请求头信息
header := http.Header{}
header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
transport := &http.Transport{}
client := &http.Client{Transport: transport}
// 创建请求
req, err := http.NewRequest("GET", "http://www.example.com", nil)
if err != nil {
log.Fatal(err)
}
req.Header = header
// 发送请求
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusOK {
// 使用goquery解析HTML文档
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
log.Fatal(err)
}
// 查询并输出所需信息
doc.Find(".site-list-con a").Each(func(i int, s *goquery.Selection) {
href, exists := s.Attr("href")
if exists {
fmt.Printf("找到网站:%s\n", href)
}
})
}
}
这段代码展示了如何使用Go语言结合goquery库来抓取一个假设的网站列表页面上的所有网站链接。代码中设置了代理服务器,并添加了请求头信息,以模拟浏览器访问。通过goquery解析HTML文档并查询所需信息,打印出来供用户参考。