分布式爬虫:scrapy-redis的使用
分布式爬虫:
概念:搭建一个分布式的机群,让其对一组资源进行分部联合爬取。
作用:提升爬取数据的效率。
在使用crawlspider类进行爬取测试成功后,再执行本文的操作,将该爬虫变为分布式爬虫的一部分。
一、爬虫文件的相关配置:
1.新建一个scrapy项目:在命令行界面运行
scrapy startproject fenbushi
scrapy genspider -t crawl fenbushi
2.在爬虫文件fenbushi.py中导入
from scrapy_redis.spiders import RedisCrawlSpider
- 注释 allowed_domains和start_urls,并添加调度器队列:
# 调度器队列名称sun,可自定义
redis_key = sun
4.将爬虫类的父类修改为RedisCrawlSpider,并编写数据解析的相关操作。
5.修改settings.py文件,添加可共享的调度器和管道类:固定代码,粘贴即可
# 管道类
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 400,
}
# 去重容器类的配置
DUPEFILTERP_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
# 使用scrapy-redis组件自己的调度器
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
# 配置持久化,当爬虫结后是否清空Redis中请求队列和去重指纹的
# set,True代表不清空,可以有效防止中断
SCHEDULER_PERSIST = True
# 指定Redis的ip和端口号,编码格式
REDIS_HOST = ‘’127.0.0.1‘
REDIS_PORT = 6379
REDIS_ENCODING = 'utf-8'
二、redis的相关配置:
redis的安装非常简单,官网下载对应版本解压后即可:Redis官网下载
1.配置redis配置文件:redis.windows.conf,修改两处:
注释掉:bind 127.0.0.1
。允许其他主机访问
2.关闭保护模式 protected-mode yes改为no
3.打开cmd命令行,开启redis服务:redis-server redis.windows.conf
4.另开一个命令行,启动客户端:redis-cli
三、启动工程
1.在pycharm中执行工程:scrapy runspider fenbushi.py
,执行后会保持监听状态
2.在redis-cli界面中,向调度器的队列中放入一个起始url:lpush sun xxx.com
3.此时会根据你自己的parse_item()开始爬取相关信息。
4.爬取结束后应该在redis-cli界面中,使用keys *
可以看到sun:item,lrange sun:item 0 -1
可查看该列表信息