【爬虫】基于Go1.19的站点模板爬虫
package main
import (
"fmt"
"log"
"net/http"
"os"
"time"
"github.com/PuerkitoBio/goquery"
)
func main() {
// 设置HTTP客户端超时
client := &http.Client{Timeout: 10 * time.Second}
// 从命令行参数获取URL
if len(os.Args) != 2 {
log.Fatal("请提供要抓取的网站URL作为第一个参数")
}
url := os.Args[1]
// 发送HTTP GET请求
res, err := client.Get(url)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
log.Fatalf("状态码错误: %d %s", res.StatusCode, res.Status)
}
// 使用goquery解析HTML文档
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
log.Fatal(err)
}
// 选择所有的<h1>元素并打印它们的内容
doc.Find("h1").Each(func(i int, s *goquery.Selection) {
fmt.Printf("第%d个H1标签的内容: %s\n", i, s.Text())
})
}
这段代码使用了Go语言的标准库net/http来发送HTTP请求,使用了第三方库github.com/PuerkitoBio/goquery来解析HTML文档并提取数据。代码简洁,注重逻辑性,适合作为爬虫入门学习的示例。
评论已关闭