精通Python爬虫框架Scrapy

找到真正的瓶颈的所在位置,去提升它。

本书的精髓是——Scrapy配置事件、以及性能调优

Scrapy是一个Twisted应用,使用单线程、非阻塞(异步)代码实现并发。只有了解事件驱动的机制,才能更好地理解本书——将阻塞代码转换为非阻塞代码,让瓶颈位于下载器中

文摘

/assets/bookshelf/精通Python爬虫框架Scrapy/流程.jpg

基于Scrapy框架的爬虫应用,其开发流程是UR2IM

/assets/bookshelf/精通Python爬虫框架Scrapy/性能模型.jpg

Scrapy在设计时就将下载器作为瓶颈。从一个低数值的CONCURRENT_REQUESTS开始,逐渐增加,直到触及下述限制之一:

  • CPU使用率大于80%~90%;

  • 源网站延迟过度增长;

  • 抓取程序中响应达到了5MB的内存限制。

同时,执行以下操作:

  • 始终保持调度器队列(mqs/dqs)中至少有一定量的请求,避免下载器出现URL饥饿;

  • 永远不要使用任何阻塞代码或CPU密集型代码。