爬虫配置
Colly 的默认配置针对在一项作业中抓取较少数量的站点进行了优化。如果您想抓取数百万个网站,则此设置并不是最佳选择。以下是一些调整:
使用后端持久化存储
默认情况下,Colly 在内存中存储 cookie 和访问过的 URL。您可以将内置内存存储后端替换为任何自定义后端。查看更多详细信息。
具有递归调用的长时间运行作业使用异步请求
默认情况下,当请求未完成时,Colly 会阻塞,因此从回调中递归调用 Collector.Visit 会产生不断增长的堆栈。使用 Collector.Async = true 可以避免这种情况。 (不要忘记将 c.Wait() 与 async 一起使用。)
禁用或限制连接 keep-alive
Colly 使用 HTTP keep-alive 来提高抓取速度。它需要打开的文件描述符,因此长时间运行的作业可以轻松达到 max-fd 限制。
可以使用以下代码禁用 HTTP Keep-alive:
go
c := colly.NewCollector()
c.WithTransport(&http.Transport{
DisableKeepAlives: true,
})