这里我用自己的虚拟机配合这自己的windows进行分布式爬虫,先开启redis服务器,进入安装redis的环境目录,输入
redis-server.exe redis.windows.conf即可开启。
2.利用xshell链接到虚拟机,接下来就是步骤。
编写一个scrapy_redis分布式爬虫:
要将一个scrapy项目编程一个scrapy_redis项目只需要修改以下三点就可以了:
1. 将爬虫的类从scrapy.Spider变成scrapy_redis.spiers.RedisSpider;或者是从scrapy.CrawlSpider编程scrapy_redis.spiders.RedisCrawlspider.
2.将爬虫中的start_url删掉。增加一个redis_key='xxx'。这个redis_key是为了在以后redis中控制爬虫启动的。爬虫的第一个url,就是在redis中通过这个发送出去的。
3。 在配置文件中增加如下配置:
将下列代码放入到代码的settings中,同时关闭原有的item_pipelines。
"""
### 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'
REDIS_PORT = 6379
"""
- 运行爬虫
(1) 在爬虫服务器上。进入爬虫文件的所在路径,然后输入scrapy runspider [爬虫名字]
(2) 在redis服务器上,推入一个开始的url链接:redis-cli lpush [redis_key] start_url 开始爬取
最后,然我们来运行一下这个分布式爬虫吧,是不是非常酷炫呢
进入redis桌面中查看数据,这里我爬取了一万多条数据。