1. scrapy对request的URL去重
yield scrapy.Request(url, self.parse, dont_filter=False)
注意这个参数:dont_filter=False
2. Jobs: 暂停,恢复爬虫
启用一个爬虫的持久化,运行以下命令:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
然后,你就能在任何时候安全地停止爬虫(按Ctrl-C或者发送一个信号)。
恢复这个爬虫也是同样的命令:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
这样爬虫断掉后,再启动会接着上次的 url 跑。
详细请看 https://www.howtoing.com/scra...
如果命令行里不想看到那么多输出的话,可以加个 -L WARNING 参数
运行爬虫如: scrapy crawl spider1 -L WARNING
1、Pipleline 加入如下代码:(在数据爬完后将URL塞入redis去重)
class RedisInsert(object):
def process_item(self,item,spider):
set_redis_values_1(item['url'])
return item
2、Middleware加入如下代码:(在爬数据之前查看该URL是否爬取过)
class IngoreRequestMiddleware(object):
def __init__(self):
self.middlewareLogging=getLogger("IngoreRequestMiddleware")
def process_request(self,request,spider):
if get_redis_values_1(request.url):
self.middlewareLogging.debug("IgnoreRequest : %s" % request.url)
raise IgnoreRequest("IgnoreRequest : %s" % request.url)
else: self.middlewareLogging.debug("haveRequest : %s" % request.url)
return None
---------------------

python scrapy爬虫数据库去重方法的更多相关文章

  1. Python操作SQLite数据库的方法详解

    Python操作SQLite数据库的方法详解 本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开 ...

  2. python - scrapy 爬虫框架(创建, 持久化, 去重, 深度, cookie)

    ## scrapy 依赖 twisted  - twisted 是一个基于事件循环的 异步非阻塞 框架/模块 ##  项目的创建  1. 创建 project scrapy startproject ...

  3. 如何在vscode中调试python scrapy爬虫

    本文环境为 Win10 64bit+VS Code+Python3.6,步骤简单罗列下,此方法可以不用单独建一个Py入口来调用命令行 安装Python,从官网下载,过程略,这里主要注意将python目 ...

  4. Python Scrapy 爬虫框架实例(一)

    之前有介绍 scrapy 的相关知识,但是没有介绍相关实例,在这里做个小例,供大家参考学习. 注:后续不强调python 版本,默认即为python3.x. 爬取目标 这里简单找一个图片网站,获取图片 ...

  5. Python Scrapy 爬虫框架实例

    之前有介绍 scrapy 的相关知识,但是没有介绍相关实例,在这里做个小例,供大家参考学习. 注:后续不强调python 版本,默认即为python3.x. 爬取目标 这里简单找一个图片网站,获取图片 ...

  6. Python Scrapy爬虫框架之初次使用

    此篇博客为本人对小甲鱼的课程的总结. 关于Scrapy的安装网上都有方法,这里便不再叙述. 使用Scrapy抓取一个网站一共需要四个步骤: 0.创建一个Scrapy项目: 1.定义Item容器: 2. ...

  7. Python使用MySQL数据库的方法以及一个实例

    使用环境:Windows+python3.4+MySQL5.5+Navicat 一.创建连接 1.准备工作,想要使用Python操作MySQL,首先需要安装MySQL-Python的包,在Python ...

  8. postgresql数据库去重方法

    数据库去重有很多方法,下面列出目前理解与使用的方法 第一种 通过group by分组,然后将分组后的数据写入临时表然后再写入另外的表,对于没有出现再group by后面的field可以用函数max,m ...

  9. python scrapy爬虫存储数据库方法带去重步骤

    import pymongo import requests import random import time import pymysql db = pymongo.MongoClient()[' ...

随机推荐

  1. python基础之变量以及if语句

    1.变量 1.1定义:变量是一种介质,是将一些值暂时存储在内存中,方便后续程序调用.可将其看作容器但其内部的东西是可变化的. 1.2 变量的命名规则: 1.变量的命名只能由数字,字母,下划线构成. 2 ...

  2. 排座椅(洛谷P1056)

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳. 同 ...

  3. spring boot(七)mybatis多数据源解决方案

    说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...

  4. k8s相关端口表-以及周边工具

    k8s端口 kube-api 6443 kube-controller-manager 10252 kube-scheduler 10251 kubelet 10250 kube-proxy 1025 ...

  5. 关于linux中用vi新建立一个.c文件无法保存,显示E212错误的时候

    在ubuntu16.04环境下,用vi新键.c文件,怎么保存也不能 先按ESC  然后:  在后wq  可是显示文件212错误. 后来知道在建立.c的文件夹的权限不对.这里的权限用 ls -l来查看 ...

  6. SET构造函数

    set<int,greater<int>> S; 可以在第二个参数位置设置比较模板,效果和sort类似,less表示升序,greater表示降序.这样做的好处是为了方便应对题目 ...

  7. PAT 1023 Have Fun with Numbers

    1023 Have Fun with Numbers (20 分)   Notice that the number 123456789 is a 9-digit number consisting ...

  8. java调用url

    1 try { String str; URL u = new URL("https://www.baidu.com"); InputStream is = u.openStrea ...

  9. nginx是什么,如何使用

    一:nginx是什么? 二:nginx作为网关,需要具备什么?(nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:) 反向代理(反向代理就是服务器找来一个机器代 ...

  10. [CodeForces - 447B] B - DZY Loves Strings

    B - DZY Loves Strings DZY loves collecting special strings which only contain lowercase letters. For ...