分布式爬虫
编写Scrapy-Redis分布式爬虫:
要将一个scrapy项目编程一个scrapy-redis项目只需修改以下三点就可以了:
- 将爬虫的类从scrapy.Spider变成scrapy_redis.spiders.RedisSpider ;或者是从scrapy.CrawlSpider变成scrapy_redis.spider.RedisCrawlSpider。
- 将爬虫中的start_urls删掉。增加一个redis_key="xxxx"。这个redis_key是为了以后再redis中控制爬虫启动的。爬虫的第一个url,就是redis中通过这个发送出去的。
-
在配置文件中增加如下配置:
# Scrapy-Redis相关配置 # 确保request存储到redis中 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 确保所有爬虫共享相同的去重指纹 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 设置redis为item pipeline ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 300, } # 在redis中保持scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能。 SCHEDULER_PERSIST = True # 设置连接redis信息 REDIS_HOST = '127.0.0.1' # 查看你的IP地址 进行更改 查看IP地址命令: ipconfig REDSI_PORT = 6379
1. 运行爬虫:
i. 在爬虫服务器上。进入爬虫文件所在的路径,然后输入命令:scrapy runspider [爬虫名字]。
ii. 在Redis服务器上,推入一个开始的url链接:redis-cli> lpush [redis_key] start_url 开始爬取。