Scrapy 框架默认是用来开发定向爬虫的。一般情况下,在 spiders 文件夹下面的一个.py 文件对应了一个网站的爬取。
但还有另外一种爬虫,它不会拘泥于提取页面上的特定文字,而是关注如何并行爬取非常多的网站。这种爬虫可以实现大规模的爬取。这种爬虫,一般是从若干个种子网址开始爬。进入每个网址后,把该页面的所有网址作为新的种子网址继续爬取,源源不断,生生不息。但爬到以后,一般直接把整个页面的源代码保存下来,通过 Kafka 或者其他组件传给另外的服务进行解析。
为了让 Scrapy 适配这种通用的解析逻辑,需要做一些定制化修改。Scrapy
- 官方文档中,给出了几点修改建议[1]。 修改调度队列 Scrapy
默认的调度队列是scrapy.pqueues.ScrapyPriorityQueue,它适合做定向爬虫使用,对于通用爬虫,我们应该修改为scrapy.pqueues.DownloaderAwarePriorityQueue。在
settings.py文件中添加一行:
SCHEDULER_PRIORITY_QUEUE = 'scrapy.pqueues.DownloaderAwarePriorityQueue'
- 提高并发量
在 settings.py中增加配置:
CONCURRENT_REQUESTS = 100
CONCURRENT_REQUESTS_PER_DO