scrapy_redis分布式爬虫

说到redis了,自然就要说到另一个爬虫框架scrapy_redis,分布式爬虫,
scrapy与scrapy_redis最大的不同是scheduler,也正是因为这个scheduler才使得scrapy_redis能够做到分布式。
最大的改动在于将带爬url放进redis,master主要就是维护此队列,slave就能根据优先级队列进行分别式爬取,同时redis有set,dupefiler模块通过哈希指纹去重,保证分布式进行。
item返回是先返回到master的redis然后存入其他数据库。

对scrapy的改造:
改造
setting:

1.(必须加)。使用scrapy_redis.duperfilter.REPDupeFilter的去重组件,在redis数据库里做去重。

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

2.(必须加)。使用了scrapy_redis的调度器,在redis里面分配请求。

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

3.(必须加)。在redis queues 允许暂停和暂停后恢复,也就是不清理redis queues

SCHEDULER_PERSIST = True

4.(必须加)。通过RedisPipeline将item写入key为 spider.name: items的redis的list中,供后面的分布式处理item。

这个已经由scrapy-redis实现了,不需要我们自己手动写代码,直接使用即可。

ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 100
}
REDIS_HOST = "127.0.0.1"
REDIS_PORT = 6379

spider:

from scrapy_redis.spiders import RedisSpider
import scrapy

class ToutiaoSpider(RedisSpider):
    name='toutiao'
    redis_key = 'start_url'    #需将start_url先存入redis
    def parse(self, response):
        ....
        scrapy.Request(url, callback=xxx)

scrapy与scrapy_redis的区别
scrapy_redis总结

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言 在上篇使用Scrapy爬取知乎用户信息我们编写了一个单机的爬虫,这篇记录了使用Scrapy-Redis将其重...
    朱晓飞阅读 6,741评论 1 24
  • 一,scrapy和scrapy-redis的区别? scrapy是一个爬虫通用框架,但不支持分布式,scrapy-...
    城北有梦阅读 831评论 0 1
  • 没有奶茶的夏天怎么可能舒心?这10家饮品店你都喝过么? 天越热,越想喝奶茶。奶茶,是吃货前进的阶梯。为什么我的眼里...
    37餐饮阅读 248评论 0 0
  • 平超老师五年书法教育研究实践活动回顾(十五) 2017年6月,平超老师在自己住处装配书法工作室,并正式收徒。
    平氏书法教育阅读 300评论 0 2
  • 姓名:邝念君 学号:14020150024 【嵌牛导读】:EXT3,EXT4,BTRFS和XFS是现在最常见的四个...
    nianjun阅读 1,616评论 0 0