码迷,mamicode.com
首页 > 其他好文 > 详细

Scrapy-redis分布式爬虫

时间:2019-04-05 09:23:43      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:去重   str   lsp   数据   添加   pre   llb   redis   dex   

将Scrapy项目修改为分布式

https://github.com/rmax/scrapy-redis

  • dmoz.py:普通crawlspider模板
  • myspider_redis.py:分布式的Spider模板
  • mycrawler_redis.py:分布式的CrawlSpider模板

一、修改继承的类为RedisCrawlSpider

class TaobaoSpider(RedisCrawlSpider):
    pass

二、导入RedisCrawlSpider的库并删除多余的库

from scrapy_redis.spiders import RedisCrawlSpider

三、由于默认提供的__init__方法不能使用,所以我们需要使用allowed_domains这种列表的形式

 allowed_domains = [‘www.ygdy8.net‘]

四、注释start_urls

# start_urls = [‘http://www.ygdy8.net/html/gndy/dyzz/index.html/‘]

五、添加redis_key

redis_key = ‘fen:start_urls‘

六、定义提取连接的规则

rules = (
  Rule(LinkExtractor(allow
=rlist_23_\d+.html), callback=parse_item, follow=True), )

七、在settings.py文件中添加三个组件

# 指纹去重组件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 调用器组件
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 在爬取的过程中允许暂停
SCHEDULER_PERSIST = True

八、 在settings.py文件中配置redis管道以及redis数据存储配置

# scrapy-redis组件已经写好往redis中存放的管道,只需要使用即可,默认存储到本机的redis服务中
ITEM_PIPELINES = {
‘scrapy_redis.pipelines.RedisPipeline‘: 400,
}
# 配置存储的redis服务器
REDIS_HOST = ‘Redis端的ip地址‘
REDIS_PORT = 6379

九、在settings.py文件中开启延迟下载

# 延迟下载,注意素质!
DOWNLOAD_DELAY = 1

十、运行分布式爬虫文件

scrapy runspider 爬虫文件名称

十一、由master端的redis给起始的url命令

lpush redis_key的值 起始url

 

Scrapy-redis分布式爬虫

标签:去重   str   lsp   数据   添加   pre   llb   redis   dex   

原文地址:https://www.cnblogs.com/huanggaoyu/p/10657897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!