1. 创建文件以及创建scrapy工程

scrapy startproject fbsPro

40156-4p2zz7w3ph3.png

2. 进入工程,创建基于CrawlSpider的爬虫文件

scrapy genspider -t crawl fbs www.xxx.com

27579-3ce0mw0lsub.png

3. 修改当前爬虫文件

  1. 在fbs.py重新导包

    from scrapy_redis.spiders import RedisCrawlSpider
  2. 将start_urls和allowed_domains进行注释
    74636-1nai1e4joln.png
  3. 添加一个新属性:redis_key = 'sun' ,表示可以被共享的调度器队列的名称,直接将起始url放进队列来代替start_urls的功能
    48866-fesbqlqf5q7.png
  4. 编写数据解析相关的操作
  5. 先编写allow正则表达式,再对response进行解析,在items中创建变量,在fbs.py继承管道并实例化传参
    50387-28ue2neqwhr.png
  6. 将当前爬虫类的父类修改成RedisCrawlSpider
  7. 修改settings.py,ROBOTSTXT_OBEY改为False,UA伪装换掉
      指定使用可以被共享的管道:

    ITEM_PIPELINES = {
     'scrapy_redis.pipelines.RedisPipeline': 400
    }

      指定调度器:

    # 增加了一个去重容器类的配置, 作用使用Redis的set集合来存储请求的指纹数据, 从而实现请求去重的持久化
    DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
    # 使用scrapy-redis组件自己的调度器
    SCHEDULER = "scrapy_redis.scheduler.Scheduler"
    # 配置调度器是否要持久化, 也就是当爬虫结束了, 要不要清空Redis中请求队列和去重指纹的set。如果是True, 就表示要持久化存储, 就不清空数据, 否则清空数据
    SCHEDULER_PERSIST = True

      指定redis服务器

  8. redis相关操作配置:
  9. 配置redis的配置文件:
      linux或者mac:redis.conf
      windows:redis.windows.conf
  10. 打开配置文件修改:
      将bind 127.0.0.1进行删除
      关闭保护模式:protected-mode yes改为no
  11. 结合着配置文件开启redis服务
      redis-server 配置文件
    82387-x26mhzahsn9.png
  12. 启动客户端:
      redis-cli
  13. 执行工程:
      scrapy runspider xxx.py
  14. 向调度器的队列中放入一个起始的url:
    调度器的队列在redis的客户端中
    lpush 队列名称(sun) www.xxx.com
    爬取到的数据存储在了redis的proName:items这个数据结构中
最后修改:2022 年 04 月 24 日
如果觉得我的文章对你有用,请随意赞赏