每次项目重新启动的时候不可能再去把相同的内容重新采集一次,所以增量爬取很重要
使用分布式scrapy-redis可以实现去重与增量爬取。因为这个库可以通过redis实现去重与增量爬取,爬虫停止以后下次运行会接着上次结束的节点继续运行.
缺点是,Scrapy-Redis调度的任务是Request对象,里面信息量比较大(不仅包含url,还有callback函数、headers等信息),可能导致的结果就是会降低爬虫速度、而且会占用Redis大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平。
来源:崔庆才的个人博客
总结一下:
建议大家去看看崔大大的博客,干货很多。
然后就是安装redis了,
安装redis自行百度网上全是,或者点这里https://blog.csdn.net/zhao_5352269/article/details/86300221
第二步就是setting.py 的配置
master的配置没密码的话去掉:后的
# 配置scrapy-redis实现简单的分布式爬取 |
---|
SCHEDULER = "scrapy_redis.scheduler.Scheduler" |
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" |
REDIS_URL = 'redis://root:123456@192.168.114.130:6379' |
Slave的配置
# 配置scrapy-redis实现简单的分布式爬取 |
---|
SCHEDULER = "scrapy_redis.scheduler.Scheduler" |
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" |
REDIS_HOST = '192.168.114.130' |
REDIS_PORT = 6379 |
REDIS_PARAMS = { |
'password': '123456', |
} |
安装scrapy-redis
pip3 install scrapy-reids
安装完之后就可以实现简单的分布式,两个可以随意启动。
本文分享自 Python爬虫scrapy 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!