Go基础爬虫核心是net/http发请求+io.ReadAll/流式读取+goquery解析HTML;需设超时Client、关闭resp.Body、处理编码乱码、注意goquery大小写及命名空间、添加User-Agent/Referer、随机延时与重试。

Go 语言写基础爬虫,核心就是 net/http 发请求 + io.ReadAll 或流式读取响应体 + 第三方库(如 goquery)解析 HTML。不依赖重量级框架,几行代码就能跑起来,但容易在重定向、编码、超时、User-Agent 和反爬响应上翻车。
用 http.Get 发最简请求,但必须设超时
直接调 http.Get 看似简单,但它底层用的是默认的 http.DefaultClient,没有超时控制——遇到网络卡顿或目标不响应,goroutine 会永久阻塞。
正确做法是构造带超时的 *http.Client:
client := &http.Client{
Timeout: 10 * time.Second,
}
resp, err := client.Get("https://example.com")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()常见错误:漏掉 resp.Body.Close(),导致 TCP 连接不释放,爬多了直接触发 too many open files。
立即学习“go语言免费学习笔记(深入)”;
处理中文乱码:别信 Content-Type 的 charset
很多网站 HTML 中声明了 锛










