主要有三个设置项来控制下载器的容量:CONCURRENT_REQUESTS
,CONCURRENT_REQUESTS_PER_DOMAIN
和
CONCURRENT_REQUESTS_PER_IP
。第一个设置项提供了一个粗略的控制,无论如何不会有超过CONCURRENT_REQUESTS
数目的请求被并发下载。在另一方面,如果你的目标域名只是一个或者少数的几个,那么CONCURRENT_REQUESTS_PER_DOMAIN
可能就会提供对并发请求数目的更进一步的限制。不过如果你设置了CONCURRENT_REQUESTS_PER_IP
,那么CONCURRENT_REQUESTS_PER_DOMAIN
就会被忽略,这时的限制会是针对每个IP的。在很多域名都反射一个服务器的时候,这会帮你避免过度地访问远程服务器。
为了使我们的分析工作简单一点,我们把CONCURRENT_REQUESTS_PER_IP
保持为默认值(0),这样就禁用了对每个IP的限制,并且把CONCURRENT_REQUESTS_PER_DOMAIN
设置成一个很大的值(1000000) 。这样的设置实际上就是禁用了这些限制,这样下载器的并发请求数目就只由CONCURRENT_REQUESTS
来控制了。
---------------------------------------------以上参考参考:https://blog.csdn.net/q_an1314/article/details/51245011
另外一个重要参数:DOWNLOAD_DELAY
下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度, 减轻服务器压力。同时也支持小数:
建议视爬取网站来定,如果是大型数据网站或已知有反爬虫措施网站,使用ip池的情况下1-2秒之间,
否则就看你的爬取程度和网站来定(适当增加并发而不要充满恶意)
代理池的使用在前面
最后也是最重要的:优化你的代码,少跑非法链接,适当合并爬虫,对于可能报错的地方进行异常处理等