基础步骤
创建工程
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