Crawler 配置
Colly的默认配置是为在一个作业中抓取少量站点而优化的。如果您想爬行数百万个站点,这种设置不是最好的。以下是一些调整:
使用持久存储后端
默认情况下,Colly将cookie和访问过的url存储在内存中。您可以用任何自定义后端替换内置的内存存储后端。详情请点击这里。
使用异步处理递归调用的长时间运行的工作
默认情况下,Colly在请求未完成时阻塞,因此递归调用Collector。回调访问产生不断增长的堆栈。收集器。Async = true这是可以避免的。(不要忘记在async中使用c.Wait()。)
禁用或限制连接keep-alive
Colly使用HTTP keep-alive来提高抓取速度。它需要打开文件描述符,因此长时间运行的作业很容易达到max-fd限制。
HTTP Keep-alive可以通过以下代码禁用:
c := colly.NewCollector() c.WithTransport(&http.Transport{ DisableKeepAlives: true, })