Scrapy-redis分布式爬虫配置
基础步骤
创建工程
cd到工程目录
创建爬虫文件
- 基于spider的爬虫文件
- 基于CrawlSpider的爬虫文件
修改爬虫类:
- 爬虫文件中:
from scrapy_redis.spiders import RedisCrawlSpider
class FbsSpider(RedisCrawlSpider):
name = 'fbs'
# allowed_domains = ['www.xx.com']
# start_urls = ['https://www.xx.com/']
redis_key = ''
-
导入
RedisCrawlSpider
包 -
修改当前爬虫类继承的父类为
RedisCrawlSpider
-
allowed_domains
和start_urls
都不需要 -
添加新属性:
redis_key = 'fbsQueue'
。它表示的是 可以被共享的调度器队列的名称。 -
编写爬虫类的其他常规操作。
setting.py配置
-
Robots协议
-
UA伪装
-
管道的指定:
ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 400, }
-
调度器的指定
# 去重容器类的配置,使用Redis的set集合来存储请求的指纹数据,从而实现请求去重的持久化 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter' # 使用 scrapy-redis 自己的调度器 SCHEDULER = 'scrapy_redis.scheduler.Scheduler' # 配置调度器是否持久化,True表示持久化,不清空请求队列,那么就可以增量式爬虫 SCHEDULER_PERSIST = True # 增量式配置
-
指定redis数据库
REDIS_HOST = 'redis服务的ip地址' REDIS_PORT = 6379
redis相关配置
找到配置文件(redis.windows.conf):
-
关闭默认绑定:注释掉:
bind 127.0.0.1
大概在56行 -
关闭redis保护模式:
protected-mode yes
其中的yes改为no。大概在75行 -
启动redis的服务端和客户端:
redis-server.exe redis.windows.conf
redis-cli
-
启动程序:
cd 到爬虫文件对应的目录,然后: scrapy runspider xxx.py
向调度器的队列中 扔一个起始URL(队列是存在于redis中):
redis客户端输入:
> lpush fbsQueue https://www.xx.com