配置Scrapy-Redis

配置Scrapy-Redis非常简单,只需要修改一下settings.py配置文件即可。

1. 核心配置

首先最主要的是,需要将调度器的类和去重的类替换为Scrapy-Redis提供的类,在settings.py里面添加如下配置即可

SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

2. Redis连接配置

第一种,直接在settings.py里面配置为REDIS_URL变量即可:

REDIS_URL = 'redis://:foobared@120.27.34.25:6379'

第二种

REDIS_HOST = '120.27.34.25'
REDIS_PORT = 6379
REDIS_PASSWORD = 'foobared'

注意:如果配置了REDIS_URL,那么Scrapy-Redis将优先使用REDIS_URL连接,会覆盖上面的三项配置。如果想要分项单独配置的话,请不要配置REDIS_URL。

3. 配置调度队列

此项配置是可选的,默认使用PriorityQueue。如果想要更改配置,可以配置SCHEDULER_QUEUE_CLASS变量,如下所示:

SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.FifoQueue'
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.LifoQueue'

4. 配置持久化

此配置是可选的,默认是False。Scrapy-Redis默认会在爬取全部完成后清空爬取队列和去重指纹集合。

如果不想自动清空爬取队列和去重指纹集合,可以增加如下配置:

SCHEDULER_PERSIST = True

将SCHEDULER_PERSIST设置为True之后,爬取队列和去重指纹集合不会在爬取完成后自动清空,如果不配置,默认是False,即自动清空。

值得注意的是,如果强制中断爬虫的运行,爬取队列和去重指纹集合是不会自动清空的。

在本项目中不进行任何配置,我们使用默认配置。

5. 配置重爬

此配置是可选的,默认是False。如果配置了持久化或者强制中断了爬虫,那么爬取队列和指纹集合不会被清空,爬虫重新启动之后就会接着上次爬取。如果想重新爬取,我们可以配置重爬的选项:

SCHEDULER_FLUSH_ON_START = True

这样将SCHEDULER_FLUSH_ON_START设置为True之后,爬虫每次启动时,爬取队列和指纹集合都会清空。所以要做分布式爬取,我们必须保证只能清空一次,否则每个爬虫任务在启动时都清空一次,就会把之前的爬取队列清空,势必会影响分布式爬取。

注意,此配置在单机爬取的时候比较方便,分布式爬取不常用此配置。

在本项目中不进行任何配置,我们使用默认配置。

6. Pipeline配置

此配置是可选的,默认不启动Pipeline。Scrapy-Redis实现了一个存储到Redis的Item Pipeline,启用了这个Pipeline的话,爬虫会把生成的Item存储到Redis数据库中。在数据量比较大的情况下,我们一般不会这么做。因为Redis是基于内存的,我们利用的是它处理速度快的特性,用它来做存储未免太浪费了,配置如下:

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

本项目不进行任何配置,即不启动Pipeline。

到此为止,Scrapy-Redis的配置就完成了。有的选项我们没有配置,但是这些配置在其他Scrapy项目中可能用到,要根据具体情况而定。

本文摘选自公众号:进击的coder,文章完整链接:https://mp.weixin.qq.com/s/JPkwHioLOC_27xfQCeWYhg

scrapy_redis的使用的更多相关文章

  1. scrapy分布式爬虫scrapy_redis二篇

    =============================================================== Scrapy-Redis分布式爬虫框架 ================ ...

  2. scrapy分布式爬虫scrapy_redis一篇

    分布式爬虫原理 首先我们来看一下scrapy的单机架构:     可以看到,scrapy单机模式,通过一个scrapy引擎通过一个调度器,将Requests队列中的request请求发给下载器,进行页 ...

  3. scrapy_redis 相关: 多线程更新 score/request.priority

    0.背景 使用 scrapy_redis 爬虫, 忘记或错误设置 request.priority(Rule 也可以通过参数 process_request 设置 request.priority), ...

  4. scrapy_redis 相关: 查看保存的数据

    0.参考资料 https://redis.io/topics/data-types-intro An introduction to Redis data types and abstractions ...

  5. scrapy_redis实现爬虫

    1.scrapy_redis的流程 在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中 所有的服务器公用一个redis中的request对象 所有的req ...

  6. scrapy_redis项目配置

    一.创建普通scrapy项目 二.spiders爬虫文件中修改项 import scrapy from XX.items import XXItem import json # ----1 导入类 f ...

  7. scrapy和scrapy_redis入门

    Scarp框架 需求 获取网页的url 下载网页内容(Downloader下载器) 定位元素位置, 获取特定的信息(Spiders 蜘蛛) 存储信息(ItemPipeline, 一条一条从管里走) 队 ...

  8. 定制起始url(scrapy_redis)

    爬虫:(在这里不用配置start_url,直接可以取redis里面取start_url,可以多个) from scrapy_redis.spiders import RedisSpider # cla ...

  9. [置顶]使用scrapy_redis,自动实时增量更新东方头条网全站新闻

    存储使用mysql,增量更新东方头条全站新闻的标题 新闻简介 发布时间 新闻的每一页的内容 以及新闻内的所有图片.项目文件结构. 这是run.py的内容 1 #coding=utf-8 2 from ...

  10. 使用scrapy_redis,实时增量更新东方头条网全站新闻

    存储使用mysql,增量更新东方头条全站新闻的标题 新闻简介 发布时间 新闻的每一页的内容 以及新闻内的所有图片.东方头条网没有反爬虫,新闻除了首页,其余板块的都是请求一个js.抓包就可以看到. 项目 ...

随机推荐

  1. webmagic学习之路-2:采集安居客经纪人列表

    相比较 1 稍微成熟了一点,会用的东西多了. 正则用的不好,很多东西不会,大神轻喷! package com.action; import java.util.ArrayList; import ja ...

  2. haproxy实现ssl套接字加密

    概述 如果你的应用使用SSL证书,则需要决定如何在负载均衡器上使用它们. 单服务器的简单配置通常是考虑客户端SSL连接如何被接收请求的服务器解码.由于负载均衡器处在客户端和更多服务器之间,SSL连接解 ...

  3. css强制换行显示省略号之显示两行后显示省略号

    1,首先来一个固定宽度,在一行显示,超出隐藏,显示省略号的样式 display:block; white-space:nowrap; overflow:hidden; text-overflow:el ...

  4. 构建虚拟工控环境系列 - 西门子虚拟PLC

    一. 概述 跟随着工控安全一路走来,工控安全市场今年明显有相当大的改善,无论从政策还是客户需求,都在逐步扩大中.但是,搞工控安全研究的人员却寥寥无几.一方面工控安全是个跨学课的技术,需要了解多方面的知 ...

  5. (七)make menuconfig

    1.make menuconfig进入图形界面后,输入 / 进行查找页面,如果输入有错,要删除前面输入的可以输入 ctrl加<--键(ctrl加回退按键)

  6. redis 的启动、关闭 判断其是否在运行中

    #检查后台进程是否正在运行 ps -ef |grep redis ps aux | grep redis #检测6379端口是否在监听 netstat -lntp | grep 6379 #使用配置文 ...

  7. linux 默认为ipv6的话 ,如果设置ipv4?

    第一步:查出是ens33 第二步:修改文件 对比下方修改就ok TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFRO ...

  8. 水果商城 ( Iview+ SSM + MySQL )

    因为时间原因,只做了后台,前台本来是打算使用 uni 框架 的. 有文档.E-R流程图.数据库文件. 项目源码地址:https://github.com/oukele/MyProject-Two

  9. vue基本语法 JS补充

    目录 一.VUE框架入门 1. vue框架的优势 二.VUE框架的基本使用 1. vue的引用 2. vue的基本语法结构 2. 插值表达式 3. 文本指令 (1)v-text (2)v-html ( ...

  10. springboot整合jetty(转)

    jdk1.8 springboot替换容器在网上搜索只需要两步如果不是可能就会报错Unable to start EmbeddedWebApplicationContext due to missin ...