当前位置: 首页 > news >正文

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.lryc.cn/news/96502.html

相关文章:

  • FileHub使用教程:Github Token获取步骤,使用快人一步
  • 嵌入式开发:单片机嵌入式Linux学习路径
  • Libvirt的virsh工具常用命令
  • 高斯消元解异或方程组写法
  • 前端 mock 数据的几种方式
  • 【GO】go语言入门实战 —— 猜数字游戏
  • opencv-25 图像几何变换04- 透视 cv2.warpPerspective()
  • 视频讲解Codeforces Round 887 (Div. 2)(A--C)
  • 【团队协作开发】将Gitee项目导入到本地IDEA中出现根目录不完整的问题解决(已解决)
  • vue-pdf 单列显示多个pdf页面
  • 2023年FPGA好就业吗?
  • 【业务功能篇52】Springboot+mybatis mysql开启批量执行sql参数 allowMultiQueries=true
  • StableDiffusion 换脸实现
  • 直播平台源码开发提高直播质量的关键:视频编码和解码技术
  • 如何使用 PHP 更新数据到数据库?
  • NLP masked_tokens[]、token_masks[]是什么?
  • aoa_android工程编译注意事项
  • java篇 类的进阶0x06:可见性修饰符(访问修饰符)
  • Java 贪心算法经典问题解决
  • 所有docker命令无效,解决办法
  • 系列一、创建者模式
  • 数据库系列:覆盖索引和规避回表
  • java Spring Boot上线运维 启动jar时控制台调整零时变量
  • java后端校验
  • PowerPoint如何修改“默认保存路径”?
  • 【PMP】有没有项目经理能看得懂这九张图?求挑战
  • ES6学习记录—自己记录一直更新版
  • linux操作gpio的一些记录
  • 目前新能源汽车充电桩的发展受到哪些不利因素的影响?
  • jenkins