如何改造 Scrapy 从而实现多网站大规模爬取?

本文介绍了如何改造 Scrapy 框架以适应大规模、多网站的爬取任务。主要修改包括:更换调度队列为 DownloaderAwarePriorityQueue 提高并发性能,调整并发量,增大 Twisted IO 线程池,考虑搭建专用 DNS 服务器,减少日志输出,禁用 Cookies 和自动重试,降低请求超时时间,禁用自动跳转,采用广度优先搜索策略,并关注内存管理以防止内存泄露。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值