Scrapy框架结合scrapy-reids组件实现分布式机群爬虫

鳄鱼君

发表文章数:523

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python教程 » Scrapy框架结合scrapy-reids组件实现分布式机群爬虫
分布式概念:
使用多台机器搭建一个分布式机群,在分布式机群中共同运行同一组程序,让其对同一个网站资源进行联合数据爬取。
 
原生的Scrapy框架是无法实现分布式的,原因有两点:
1.调度器无法被分布式机群共享
2.管道无法被共享
 
如何实现分布式?
使用Scrapy结合这scrapy-redis组件实现分布式
 
scrapy-redis组件的作用:
1.给scrapy提供可以被共享的管道和调度器
2.安装:pip install scrapy_redis
 
实现流程:
1.创建工程
2.cd 工程
3.创建爬虫文件(基于CrawlSpider的爬虫文件)
4.修改爬虫文件:
① 导包:from scrapy_redis.spiders import RedisCrawlSpider
② 修改当前爬虫类的父类:RedisSpider
③ 删除start_urls,添加一个新属性:redis_key = ‘xxx’,可以被共享的调度器队列的名称
④ 基于常规的操作获取url发送请求解析数据
⑤ 修改settings.py配置文件:
—-指定调度器
#增加了一个去重容器类配置,作用:使用Redis的set集合来存储请求的指纹数据
DUPEFILTER_CLASS=’scrapy_redis.dupefilter.RFPDupeFilter’
#使用scrapy-redis组件自己的调度器,指定scheduler队列
SCHEDULER=’scrapy_redis.scheduler.Scheduler’
#队列中的内容是否持久保存,为False的时候,关闭redis的同时会清空redis数据
SCHEDULER_PERSIST=True
—-指定管道
ITEM_PIPELINES = {
‘scrapy_redis.pipelines.RedisPipeline’:400,
}
—-指定redis服务器
REDIS_HOST=’127.0.0.1′
REDIS_PORT=6379
# 或者:REDIS_URL=’redis://127.0.0.1:6379′
⑥ 对redis的配置文件进行配置(redis.windows.conf
取消默认绑定(注释bind 127.0.0.1
关闭保护模式(protexted-mode yes:将yes改为 no)

⑦ 启动reids的服务端和客户端
⑧ 执行分布式程序(日志输出会卡住,直到接收到起始的url为止)
⑨ 向调度器的队列中扔入一个起始的url,即:lpush 爬虫名字 网址

bind 127.0.0.1表示reids只可以本机访问,如果想要让其他机器访问就需要注释掉;保护模式表示,其它的服务器可以访问reids服务器,不能写入数据。

具体的实现效果参考:scrapy_redis通过RedisSpider类实现分布式爬虫-当当图书分布式爬虫演示

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Scrapy框架结合scrapy-reids组件实现分布式机群爬虫》 发布于2020-05-09

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

6 + 9 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册