scrapy_redis分布式爬虫

本文介绍了scrapy_redis如何实现分布式爬虫,包括启动Redis、修改爬虫代码、设置Scheduler、去重策略以及请求调度算法。还讨论了如何处理和存储从Redis中获取的数据。
摘要由CSDN通过智能技术生成

scrapy_redis分布式爬虫总结

scrapy_redis:Scrapy_redis在scrapy的基础上实现了更多,更强大的功能,具体体现在:reqeust去重,爬虫持久化,和轻松实现分布式

使用scrapy_redis好处
reqeust去重,爬虫持久化,和轻松实现分布式

提供了下面四种组件

  • Scheduler
  • Duplication Filter
  • Item Pipeline
  • Base Spider

安装:

pip3 install scrapy-redis

Scrapy_redis是工作流程

在这里插入图片描述
官方文档

第一步: 启动Redis

首先需要把Redis启动起来。使用Mac OS/Linux的可以在终端下面输入以下命令并回车: redis-server
使用Windows的,在CMD中cd进入存放Redis的文件夹,并运行:
redis-server.exe

第二步: 修改爬虫
在前面的课程中,我们爬虫是继承自scrapy.Spider这个父类。这是Scrapy里面最基本的一个爬虫类,只能实现基本的爬虫功能。现在需要把它替换掉,从而实现更高级的功能。

请对比一下下面这段使用了Scrapy_redis的代码与前面read color网站爬虫的代码头部有什么不同:

from scrapy_redis.spiders import RedisSpider

class ReadColorSpider(RedisSpider):name ="readcolorspider"

redis_key ='readcolorspider:start_urls'

可以看出,这里爬虫的父类已经改成了RedisSpider,同时多了一个:

redis_key='readcolorspider:start_urls'

这里的redis_key实际上就是一个变量名,之后爬虫爬到的所有URL都会保存到Redis中这个名为==“readcolorspider:start_urls”==的列表下面,爬虫同时也会从这个列表中读取后续页面的URL。这个变量名可以任意修改。

除了这两点以外,在爬虫部分的其他代码都不需要做修改。

实际上,这样就已经建立了一个分布式爬虫,只不过现在只有一台电脑。
第三步: 修改设置
现在已经把三轮车换成了挖掘机,但是Scrapy还在按照指挥三轮车的方式指挥挖掘机,所以挖掘机还不能正常工作。因此修改爬虫文件还不行,Scrapy还不能认识这个新的爬虫。现在修改settings.py。

(1)Scheduler
首先是Scheduler的替换,这个东西是Scrapy中的调度员。在settings.py中添加以下代码:

Enables scheduling storing requests queue in redis.

SCHEDULER="scrapy_redis.scheduler.Scheduler"

(2)去重

 Ensure all spiders share same duplicates filter through redis.

DUPEFILTER_CLASS="scrapy_redis.dupefilter.RFPDupeFilter"

设置好上面两项以后,爬虫已经可以正常开始工作了。不过还可以多设置一些东西使爬虫更好用。

(3)不清理Redis队列

Don't cleanup redis queues, allows to pause/re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值