基础步骤
创建工程
cd到工程目录
创建爬虫文件
- 基于spider的爬虫文件
- 基于CrawlSpider的爬虫文件
修改爬虫类:
- 爬虫文件中:
from scrapy_redis.spiders import RedisCrawlSpiderclass FbsSpider(RedisCrawlSpider):name = 'fbs'# allowed_domains = ['www.xx.com']# start_urls = ['https://www.xx.com/']redis_key = ''
导入
RedisCrawlSpider包修改当前爬虫类继承的父类为
RedisCrawlSpiderallowed_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
