Go入门实战:网络爬虫的实现
package main
import (
"fmt"
"log"
"net/http"
"os"
"time"
"github.com/PuerkitoBio/goquery"
)
func main() {
// 初始化HTTP客户端
client := &http.Client{
Timeout: 10 * time.Second,
}
// 指定URL
url := "https://www.example.com"
// 发送HTTP GET请求
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Fatal(err)
}
// 设置请求头信息,模拟浏览器访问
req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
// 执行请求
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// 使用goquery解析HTML文档
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
log.Fatal(err)
}
// 查询所需的数据并输出
doc.Find(".product-list-item").Each(func(i int, s *goquery.Selection) {
productName := s.Find(".product-name").Text()
productPrice := s.Find(".product-price").Text()
fmt.Printf("Product Name: %s, Price: %s\n", productName, productPrice)
})
}
这段代码使用了Go语言的标准库net/http
来发送HTTP请求,使用了github.com/PuerkitoBio/goquery
包来解析HTML文档并查询数据。代码模拟了一个简单的网络爬虫,获取了网页上的产品名称和价格,并输出到控制台。这个例子教会了如何使用Go语言进行基本的网络爬虫开发。
评论已关闭