scrapy分布式+指纹去重原理

1,指纹去重原理存在于 scrapy.util.requests 里面

需要安装的包

pip install scrapy-redis-cluster # 安装模块
pip install scrapy-redis-cluster==0.4 # 安装模块时指定版本
pip install --upgrade scrapy-redis-cluster # 升级模块版本

2,setting配置

# -*- coding: utf-8 -*-BOT_NAME = 'zongheng'SPIDER_MODULES = ['rankxs.spiders']
NEWSPIDER_MODULE = 'rankxs.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent# Obey robots.txt rules
ROBOTSTXT_OBEY = False######################################################
##############下面是Scrapy-Redis相关配置################
####################################################### 指定Redis的主机名和端口
REDIS_HOST = 'localhost'
REDIS_PORT = 6379# 调度器启用Redis存储Requests队列
SCHEDULER = "scrapy_redis.scheduler.Scheduler"# 确保所有的爬虫实例使用Redis进行重复过滤
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"# 将Requests队列持久化到Redis,可支持暂停或重启爬虫
SCHEDULER_PERSIST = True# Requests的调度策略,默认优先级队列
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'# 将爬取到的items保存到Redis 以便进行后续处理
ITEM_PIPELINES = {"rankxs.pipelines.RankxsPipeline": 1,'scrapy_redis.pipelines.RedisPipeline': 2
}

此处的关键点在于管道的先后顺序,顺序错了,数据库的数据会进不去

3,指纹去重在redis里面的显示,用redis做去重逻辑--先遣队

zongheng:items  和 zongheng:dupefilters  两个key  

一个是items 里面的数据  ,另外一个则是已经爬取的  md5 url

爬虫爬取会先去查询redis里面的dupefiters md5 url

4,多爬虫任务可以在同一个文件进行执行CrawlerProcess,和CrawlerRunner

crawler.CrawlerRunner
from scrapy.utils.project import get_project_settings
# process=crawler.CrawlerProcess(get_project_settings())
# process.crawl(ZonghengSpider)
# process.start(stop_after_crawl=False)

程序执行报错

关键点在于stop_after_crawl配置和注释TWISTED_REACTOR可以避免,具体原因可以去看源码

5,关于多功能的

from scrapy.linkextractors import LinkExtractor

不论是scrapy 还是scrawlspider 都可以用的链接提取器比较实用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小白必看】利用Python生成个性化名单Word文档

文章目录 前言所需文件及文件格式说明excel数据如下word 模板如下文件目录格式及生成后的文件 导入所需的模块:打开 Excel 文件:选择工作表:获取数据列表:遍历数据并生成 Word 文档:完整代码结束语 前言 对于需要批量…

【MyBatis 学习一】认识MyBatis 第一个MyBatis查询

目录 一、认识MyBatis 1、MyBatis是什么? 2、为什么要学习MyBatis? 二、配置MyBatis环境 1、建库与建表 2、创建新项目 3、xml文件配置 (1)配置数据库连接 (2)配置 MyBatis 中的 XML 路径 三、测试&#x…

mysql(三)用户权限管理

目录 前言 一、概述 二、用户权限类型 三、用户赋权 四、权限删除 五、删除用户 前言 为什么要设置用户权限? MySQL设置用户管理权限的主要目的是为了确保数据库的安全性和数据的机密性。以下是一些原因: 1. 安全性:MySQL是一个开源的关系型…

Java集合之List

ArrayLsit集合 ArrayList集合的特点 ArrayList集合的一些方法 ①.add(Object element) 向列表的尾部添加指定的元素。 ②.size() 返回列表中的元素个数。 ③.get(int index) 返回列表中指定位置的元素,index从0开始。 public class Test {public static void m…

dependency walker工具简介及使用

dependency walker工具 简介使用 简介 官方概述: Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, …

C++ 核心编程

一、 内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值、…

gensim conherence model C_V 值与其他指标负相关BUG

在我用gensim3.8.3 conherence model分析京东评论主题模型时, C_V 与npmi、u_mass出现了强烈的皮尔逊负相关: 这些地方也反映了类似问题: https://github.com/dice-group/Palmetto/issues/12 https://github.com/dice-group/Palmetto/issue…

测等保2.0——安全区域边界

一、前言 今天我们来说说安全区域边界,顾名思义,安全区域边界就是保障网络边界处,包括网络对外界的边界和内部划分不同区域的交界处,我们的重点就是查看这些边界处是否部署必要的安全设备,包括防火墙、网闸、网关等安…

hypef 九、日志

教程:Hyperf hyperf结合monolog是属于低耦合,通过配置文件和调用工厂类设置参数设置实例。 monolog详见Monolog 修改_lsswear的博客-CSDN博客,理解monolog原理之后若有对应的报错比较好改。 一、使用LoggerFactory #/config/autoload/log…

git相关

gerrit用户指南: 资料:Gerrit 用户指南 gerrit-user-guide 上述有介绍如何review,review并非修改代码之后如何重新提交等操作 jenkins介绍 Jenkins详细教程 - 知乎 一、jenkins是什么? Jenkins是一个开源的、提供友好操作界…

使用Ensp配置DHCP协议

如何使用Ensp配置DHCP协议,为PC自动分配IP地址 什么是DHCP? Dynamic Host Configuration Protocol,动态主机配置协议,简单理解为自动分配IP地址,有了这个协议就不用手动配置IP地址了,如图 思路 给路由…

iptable的备份和还原

1、写在命令行当中的都是临时配置 2、把我们的规则配置在服务的文件当中,形成永久生效, iptables -save > /opt/test(自设) #进行备份 /etc/sysconfig/iptables #默认配置文件 写在配置文件中才会永久生效 iptables-r…

Docker如何使用

一、Docker安装 命令:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 1.1 Docker技术的三大核心概念 镜像:类似一个root系统文件 容器:镜像运行的实体,可以被创建、启动、停止、删除、暂停等 仓库:保存镜像 二、镜…

Ubuntu 上编译protobuf 指

欢迎大家关注我的B站主页MYVision_MY视界的个人空间-MYVision_MY视界个人主页-哔哩哔哩视频 下载protobuf GitHub - protocolbuffers/protobuf: Protocol Buffers - Googles data interchange format 根据需要从release 中下载指定的版本 下载完之后,根据提供的C…

Godot 4 着色器 - Shader调试

我之前用OpenCV进行图像相关处理,觉得已经很不错,结合GDI可以实现流畅的动画效果 直到近来用Shader后才发现,着色器更上一层楼,原来这是入了GPU的坑 Shader编程限制很多,各种不支持,看在它性能不错功能炫…

让vue项目支持glsl语法

如果你想让Vue项目支持GLSL(OpenGL着色语言)语法,你需要使用特殊的加载器使Webpack能够加载和解析GLSL文件。这一般可以通过下面的步骤实现: Install webpack-glsl-loader: npm install webpack-glsl-loader--save-dev如果你使用…

发布npm包流程

发布npm包的步骤如下: 在终端中通过 npm init 命令创建一个新的npm包,按照提示填写包的信息,如包名称、版本、描述、作者、许可证等。 在包的根目录下创建一个 index.js 文件,编写你的代码。 确认你已经注册了npm账号&#xff0…

深入浅出Pytorch函数——torch.max

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.max 深入浅出Pytorch函数——torch.maximum torch.max有三种输入形式,根据其输入形式及参数的不同有下列三种返回形式: torch.max(input)&…

mysql进阶2——prosysql实现mysql读写分离

文章目录 一、读写分离方案类型1.1 最简单的读写分离1.2 多个读组或写组的分离模式 二、案例2.1 初始化操作2.2 mysql主添加proxysql连接用户2.3 Proxysql添加连接mysql集群参数2.4 添加健康检测用户2.5 添加读写分离的路由规则2.6 验证 一、读写分离方案类型 基本了解&#xf…

pytorch工具——pytorch中的autograd

目录 关于torch.tensor关于tensor的操作关于梯度gradients 关于torch.tensor 关于tensor的操作 x1torch.ones(3,3) xtorch.ones(2,2,requires_gradTrue) print(x1,\n,x)yx2 print(y) print(x.grad_fn) print(y.grad_fn)zy*y*3 outz.mean() print(z,out)注意 atorch.randn(2,…