配置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. python爬虫下正则各种字符串数据匹配

    s = '*\/:?"<>|' #这9个字符在Windows系统下是不可以出现在文件名中的str1 = '\巴拉<1"!11[]>1*hgn/p:?|' # ...

  2. babel详解

    https://segmentfault.com/a/1190000019718925 https://babeljs.io/blog/2019/03/19/7.4.0#core-js-3-7646- ...

  3. OLE使用

    ABAP操作EXCEL有多重方法,今天记录一下OLE,具体步骤如下: 1. 首先要上载EXCEL模板 事物代码:SMW0,具体步骤参考 本博客 http://www.cnblogs.com/caizj ...

  4. 短信对接——一种jdbc链接运用

    package sms; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamRead ...

  5. 基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不 ...

  6. ELK对nginx日志进行流量监控

    ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...

  7. 9.1.远程过程调用协议_RPC

    6. RPC 6.1.什么是 RPC RPC(Remote Procedure Call Protocol)远程过程调用协议 通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个 ...

  8. 使用比特币轻量钱包Electrum

    一.选择对应的钱包安装程序 浏览器打开 https://electrum.org/#download 选择windwos版本的安装程序 点击下载,并安装 二.运行Electrum的 testnet版本 ...

  9. springboot中使用filter用配置类方式

    在03-springboot-web的Filter包下,创建HeFilter类 代码示例: package com.bjpowernode.springboot.filter; import java ...

  10. uva 1440 & uvalive 4597

    题目链接 题意: DAG的最小路径覆盖,一条边可以被重复覆盖多次,但是一次只能沿着DAG的方向覆盖一条链,问最少覆盖次数. 思路: 看了半天没有思路,所以去搜索了题解,然后发现是有源汇上下界的最小流, ...