python scrapy爬虫数据库去重方法
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爬虫数据库去重方法的更多相关文章
- Python操作SQLite数据库的方法详解
Python操作SQLite数据库的方法详解 本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开 ...
- python - scrapy 爬虫框架(创建, 持久化, 去重, 深度, cookie)
## scrapy 依赖 twisted - twisted 是一个基于事件循环的 异步非阻塞 框架/模块 ## 项目的创建 1. 创建 project scrapy startproject ...
- 如何在vscode中调试python scrapy爬虫
本文环境为 Win10 64bit+VS Code+Python3.6,步骤简单罗列下,此方法可以不用单独建一个Py入口来调用命令行 安装Python,从官网下载,过程略,这里主要注意将python目 ...
- Python Scrapy 爬虫框架实例(一)
之前有介绍 scrapy 的相关知识,但是没有介绍相关实例,在这里做个小例,供大家参考学习. 注:后续不强调python 版本,默认即为python3.x. 爬取目标 这里简单找一个图片网站,获取图片 ...
- Python Scrapy 爬虫框架实例
之前有介绍 scrapy 的相关知识,但是没有介绍相关实例,在这里做个小例,供大家参考学习. 注:后续不强调python 版本,默认即为python3.x. 爬取目标 这里简单找一个图片网站,获取图片 ...
- Python Scrapy爬虫框架之初次使用
此篇博客为本人对小甲鱼的课程的总结. 关于Scrapy的安装网上都有方法,这里便不再叙述. 使用Scrapy抓取一个网站一共需要四个步骤: 0.创建一个Scrapy项目: 1.定义Item容器: 2. ...
- Python使用MySQL数据库的方法以及一个实例
使用环境:Windows+python3.4+MySQL5.5+Navicat 一.创建连接 1.准备工作,想要使用Python操作MySQL,首先需要安装MySQL-Python的包,在Python ...
- postgresql数据库去重方法
数据库去重有很多方法,下面列出目前理解与使用的方法 第一种 通过group by分组,然后将分组后的数据写入临时表然后再写入另外的表,对于没有出现再group by后面的field可以用函数max,m ...
- python scrapy爬虫存储数据库方法带去重步骤
import pymongo import requests import random import time import pymysql db = pymongo.MongoClient()[' ...
随机推荐
- HDU 5710 Digit Sum
Let S(N)S(N) be digit-sum of NN, i.e S(109)=10,S(6)=6S(109)=10,S(6)=6. If two positive integers a,ba ...
- python模块安装报错大全
报错 环境 解决 手动安装pip install mysqlclient 报错: _mysql.c(29) : fatal error C1083: Cannot open include file: ...
- MySQL 分支和循环结构
1.if else分支 mysql:用elseif Oracle:用elsif 可以用select直接查看获取的值或者一个变量. create procedure pd_t ...
- MSMQ 概述
MSMQ 概述 1) MSMQ概述 MSMQ 表示微软消息队列服务.MSMQ 可以工作在在线或者离线场景,并提供异步编程功能.如果客户端离线,MSMQ将会是最合适的方法,这是因为服务端不需要等待客户端 ...
- python low版线程池
1.low版线程池设计思路:运用队列queue 将线程类名放入队列中,执行一个就拿一个出来import queueimport threading class ThreadPool(object): ...
- ssh -vT git@github.com get “ No such file or directory” 错误
在"Are you sure you want to continue connnecting"的时候回复y,不要打空格跳过 参考:http://stackoverflow.com ...
- node.js项目多环境配置
配置多种场景 我们的系统是要在不同的环境下运行的,不同的环境可能是不同的端口号,不同的数据库地址,数据库用户和密码, 并且可能有的需要自动重启有的不需要自动重启. 我们在有一个配置的时候是无法满足这么 ...
- 从tcp的角度看,打开一个网页到底发生了什么
使用wireshark进行抓包分析:新建表达式过滤器,选择协议,字段,匹配方式,应用就能筛选出想要的数据包. 一个示例:(tcp.srcport == 1523 or tcp.dstport == 1 ...
- [转]关于ReentrantLock中线程读某个变量是否需要加锁
我在使用ReentrantLock类对变量进行多线程累加时,调用了lock()和unlock()方法,但读取该变量时我未加锁,结果是能正确执行,代码如下: public class Main { pr ...
- commonJS 和 ES6 模块化的不同
commonjs 导出 module.exports={ add:function(){ console.log('add测试') } } 导入 var add=require('./add.js') ...