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 都可以用的链接提取器比较实用

相关推荐
深蓝电商API3 天前
将爬虫部署到服务器:Scrapy+Scrapyd 实现定时任务与监控
服务器·爬虫·scrapy
数据牧羊人的成长笔记3 天前
python爬虫scrapy框架使用
爬虫·python·scrapy
MongoVIP5 天前
Scrapy爬虫实战:正则高效解析豆瓣电影
python·scrapy
深蓝电商API7 天前
Scrapy 框架深度解析:架构、组件与工作流程
scrapy·架构
深蓝电商API7 天前
Scrapy 中间件详解:自定义下载器与爬虫的 “拦截器”
爬虫·scrapy·中间件
计算机毕设残哥8 天前
基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现
大数据·hadoop·python·scrapy·数据分析·spark·dash
计算机毕设残哥11 天前
基于Hadoop+Spark的商店购物趋势分析与可视化系统技术实现
大数据·hadoop·python·scrapy·spark·django·dash
万粉变现经纪人16 天前
如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘tokenizers’ 问题
python·selenium·测试工具·scrapy·beautifulsoup·fastapi·pip
B站_计算机毕业设计之家18 天前
✅ 基于Scrapy与朴素贝叶斯的校园舆情监测与预警系统 Django+B/S架构 可视化大屏 机器学习
python·scrapy·架构·数据分析·django·情感分析·舆情分析
万粉变现经纪人1 个月前
如何解决pip安装报错ModuleNotFoundError: No module named ‘cuml’问题
python·scrapy·beautifulsoup·pandas·ai编程·pip·scipy