基础步骤

创建工程

cd到工程目录

创建爬虫文件

  • 基于spider的爬虫文件
  • 基于CrawlSpider的爬虫文件

修改爬虫类:

  • 爬虫文件中:
  1. from scrapy_redis.spiders import RedisCrawlSpider
  2. class FbsSpider(RedisCrawlSpider):
  3. name = 'fbs'
  4. # allowed_domains = ['www.xx.com']
  5. # start_urls = ['https://www.xx.com/']
  6. redis_key = ''
  • 导入RedisCrawlSpider

  • 修改当前爬虫类继承的父类为RedisCrawlSpider

  • allowed_domainsstart_urls都不需要

  • 添加新属性:redis_key = 'fbsQueue'。它表示的是 可以被共享的调度器队列的名称。

  • 编写爬虫类的其他常规操作。

setting.py配置

  • Robots协议

  • UA伪装

  • 管道的指定:

    1. ITEM_PIPELINES = {
    2. 'scrapy_redis.pipelines.RedisPipeline': 400,
    3. }
  • 调度器的指定
    1. # 去重容器类的配置,使用Redis的set集合来存储请求的指纹数据,从而实现请求去重的持久化
    2. DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
    3. # 使用 scrapy-redis 自己的调度器
    4. SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
    5. # 配置调度器是否持久化,True表示持久化,不清空请求队列,那么就可以增量式爬虫
    6. SCHEDULER_PERSIST = True # 增量式配置
  • 指定redis数据库
    1. REDIS_HOST = 'redis服务的ip地址'
    2. REDIS_PORT = 6379

redis相关配置

找到配置文件(redis.windows.conf):

  • 关闭默认绑定:注释掉:bind 127.0.0.1 大概在56行

  • 关闭redis保护模式:protected-mode yes其中的yes改为no。大概在75行

  • 启动redis的服务端和客户端:

    1. redis-server.exe redis.windows.conf
  1. redis-cli
  • 启动程序:
    1. cd 到爬虫文件对应的目录,然后:
    2. scrapy runspider xxx.py


向调度器的队列中 扔一个起始URL(队列是存在于redis中):
redis客户端输入:

  1. > lpush fbsQueue https://www.xx.com