增加并发性¶Concurrency是并行处理的请求数。存在全局限制 ( 注解 调度程序优先级队列 recommended for broad crawls 不支持 scrapy中的默认全局并发限制不适用于并行地对许多不同的域进行爬网,因此您需要增加它。增加多少将取决于您的爬虫有多少CPU和内存可用。 一个好的起点是 CONCURRENT_REQUESTS = 100
但最好的方法是做一些试验,并确定零碎的进程在什么样的并发上受到CPU限制。为了获得最佳性能,您应该选择CPU使用率为80-90%的并发性。 增加并发性也会增加内存使用量。如果担心内存使用问题,您可能需要相应地降低全局并发限制。 增加Twisted IO线程池的最大大小¶目前scrapy使用线程池以阻塞方式进行DNS解析。如果并发性级别更高,则爬行速度可能会变慢,甚至无法达到DNS解析程序超时。增加处理DNS查询的线程数的可能解决方案。将更快地处理DNS队列,从而加快建立连接和整体爬行。 要增加最大线程池大小,请使用: REACTOR_THREADPOOL_MAXSIZE = 20
设置您自己的DNS¶如果您有多个爬行进程和单个中心DNS,它会像DOS攻击DNS服务器一样,导致整个网络速度减慢,甚至阻塞您的机器。要避免这种情况,请使用本地缓存设置您自己的DNS服务器,并向某些大型DNS(如OpenDNS或Verizon)上游设置。 降低日志级别¶当进行广泛的爬行时,你通常只对你得到的爬行率和发现的任何错误感兴趣。当使用 要设置日志级别,请使用: LOG_LEVEL = 'INFO' |
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2024-11-23 16:26 , Processed in 0.029530 second(s), 17 queries .