前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy爬取知乎------使用scrapy-redis做简单的分布式

Scrapy爬取知乎------使用scrapy-redis做简单的分布式

作者头像
andrew_a
发布2019-07-30 14:42:11
8030
发布2019-07-30 14:42:11
举报
文章被收录于专栏:Python爬虫与数据分析

每次项目重新启动的时候不可能再去把相同的内容重新采集一次,所以增量爬取很重要

使用分布式scrapy-redis可以实现去重与增量爬取。因为这个库可以通过redis实现去重与增量爬取,爬虫停止以后下次运行会接着上次结束的节点继续运行.

缺点是,Scrapy-Redis调度的任务是Request对象,里面信息量比较大(不仅包含url,还有callback函数、headers等信息),可能导致的结果就是会降低爬虫速度、而且会占用Redis大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平。

来源:崔庆才的个人博客

总结一下:

  1. 1. Scrapy-Reids 就是将Scrapy原本在内存中处理的 调度(就是一个队列Queue)、去重、这两个操作通过Redis来实现
  2. 多个Scrapy在采集同一个站点时会使用相同的redis key(可以理解为队列)添加Request 获取Request 去重Request,这样所有的spider不会进行重复采集。效率自然就嗖嗖的上去了。
  3. 3. Redis是原子性的,好处不言而喻(一个Request要么被处理 要么没被处理,不存在第三可能)

建议大家去看看崔大大的博客,干货很多。

然后就是安装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

代码语言:javascript
复制
pip3 install scrapy-reids

安装完之后就可以实现简单的分布式,两个可以随意启动。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档