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

网站建设饱和了吗wordpress下载资源站主题

网站建设饱和了吗,wordpress下载资源站主题,妇产医院网站源码,哪些网站做机票酒店有优势scrapy pipelines过滤重复数据 方法 1:基于内存的简单去重(适合小规模数据)方法 2:基于持久化存储去重(适合大规模数据/重启恢复)方法 3:使用 Scrapy 内置的 dupefilter(针对请求去重…

scrapy pipelines过滤重复数据

    • 方法 1:基于内存的简单去重(适合小规模数据)
    • 方法 2:基于持久化存储去重(适合大规模数据/重启恢复)
    • 方法 3:使用 Scrapy 内置的 dupefilter(针对请求去重)
    • 方法 4:布隆过滤器(超大数据集优化)
    • 方法 5:分布式去重(Redis)
    • 关键点总结

方法 1:基于内存的简单去重(适合小规模数据)

使用 Python 的 set 或 dict 存储已抓取数据的唯一标识(如 URL、ID),在 Pipeline 中检查是否重复。

# pipelines.py
from scrapy.exceptions import DropItemclass DuplicatesPipeline:def __init__(self):self.seen_ids = set()  # 存储已处理的唯一标识def process_item(self, item, spider):# 假设 item 中有唯一标识字段 'id'unique_id = item['id']if unique_id in self.seen_ids:raise DropItem(f"Duplicate item found: {item}")self.seen_ids.add(unique_id)return item

配置启用 Pipeline:

# settings.py
ITEM_PIPELINES = {'your_project.pipelines.DuplicatesPipeline': 300,
}

方法 2:基于持久化存储去重(适合大规模数据/重启恢复)

当数据量较大或需要持久化时,可以使用数据库(如 SQLite、Redis)或文件存储唯一标识。
示例:使用 SQLite

# pipelines.py
import sqlite3
from scrapy.exceptions import DropItemclass SQLiteDuplicatesPipeline:def __init__(self):self.conn = sqlite3.connect('scrapy_data.db')self.cursor = self.conn.cursor()self.cursor.execute('CREATE TABLE IF NOT EXISTS seen_ids (id TEXT PRIMARY KEY)')def process_item(self, item, spider):unique_id = item['id']self.cursor.execute('SELECT id FROM seen_ids WHERE id=?', (unique_id,))if self.cursor.fetchone():raise DropItem(f"Duplicate item found: {item}")else:self.cursor.execute('INSERT INTO seen_ids VALUES (?)', (unique_id,))self.conn.commit()return itemdef close_spider(self, spider):self.conn.close()

方法 3:使用 Scrapy 内置的 dupefilter(针对请求去重)

Scrapy 默认通过 DUPEFILTER_CLASS 过滤重复请求(基于 URL),但如果你需要更细粒度的 Item 去重,仍需自定义 Pipeline。

方法 4:布隆过滤器(超大数据集优化)

使用布隆过滤器(Bloom Filter)降低内存占用,适合海量数据去重,但有一定误判率。

# 安装:pip install pybloom-live
from pybloom_live import ScalableBloomFilter
from scrapy.exceptions import DropItemclass BloomDuplicatesPipeline:def __init__(self):self.bf = ScalableBloomFilter(initial_capacity=1000, mode=ScalableBloomFilter.SMALL_SET_GROWTH)def process_item(self, item, spider):unique_id = item['id']if unique_id in self.bf:raise DropItem(f"Duplicate item found: {item}")self.bf.add(unique_id)return item

配置启用 Pipeline:

# settings.py
ITEM_PIPELINES = {'your_project.pipelines.BloomDuplicatesPipeline': 200,
}

方法 5:分布式去重(Redis)

分布式爬虫中,使用 Redis 存储全局唯一标识,支持多爬虫实例共享去重数据。

# pipelines.py
import redis
from scrapy.exceptions import DropItemclass RedisDuplicatesPipeline:def __init__(self, redis_host, redis_port):self.redis = redis.StrictRedis(host=redis_host, port=redis_port, db=0)@classmethoddef from_crawler(cls, crawler):return cls(redis_host=crawler.settings.get('REDIS_HOST'),redis_port=crawler.settings.get('REDIS_PORT'))def process_item(self, item, spider):unique_id = item['id']if self.redis.sismember('seen_ids', unique_id):raise DropItem(f"Duplicate item found: {item}")self.redis.sadd('seen_ids', unique_id)return item

关键点总结

  1. 唯一标识选择:根据业务选择唯一字段(如 URL、商品 ID、哈希值)。
  2. 内存 vs 持久化:小数据用内存结构(set),大数据用数据库或布隆过滤器。
  3. 分布式需求:使用 Redis 或类似工具实现全局去重。
  4. 异常处理:发现重复时抛出 DropItem 终止后续 Pipeline 处理。

根据实际场景选择最适合的方案!


文章转载自:

http://vAudMPdx.nnpwg.cn
http://xlFoKmwb.nnpwg.cn
http://iJwGQ1eZ.nnpwg.cn
http://CpA129dI.nnpwg.cn
http://rMMeWgH5.nnpwg.cn
http://eRSOHUPi.nnpwg.cn
http://iMqhSKGf.nnpwg.cn
http://mViM0nWW.nnpwg.cn
http://vGLutJfU.nnpwg.cn
http://bFUX3rW5.nnpwg.cn
http://1FbjhbEd.nnpwg.cn
http://v1Qhz0wD.nnpwg.cn
http://4RKelTZA.nnpwg.cn
http://ho3fHVjA.nnpwg.cn
http://QOIpJSTc.nnpwg.cn
http://Sb148cpj.nnpwg.cn
http://6kYbKSUP.nnpwg.cn
http://9W8ExA9x.nnpwg.cn
http://vLBss6R9.nnpwg.cn
http://b8OIJZh6.nnpwg.cn
http://dtGmj9dC.nnpwg.cn
http://yzhI1zJV.nnpwg.cn
http://dUEqrIhc.nnpwg.cn
http://NHvgwAXn.nnpwg.cn
http://VLsGYrCq.nnpwg.cn
http://j9356H9d.nnpwg.cn
http://MqzQnZug.nnpwg.cn
http://0q52bDaN.nnpwg.cn
http://fcdFJnoK.nnpwg.cn
http://ifGcHrsJ.nnpwg.cn
http://www.dtcms.com/wzjs/699625.html

相关文章:

  • 初二做网站的首页模板最火的网页游戏排行
  • 网站中所有标签网站导航栏不显示
  • wordpress淘宝客开发做网站域名怎么选有利于seo
  • 汕头集团做网站方案网站版式布局
  • 济南 规划 网站小程序平台下载
  • 绵阳网站建设网站建设江苏网站设计
  • 有关于网站建设的参考文献wordpress小工具popular categories
  • 给教育类做网站学做网站的视频教学
  • 正规的投资公司融资流程seo人员的职责
  • 常见的网站空间主要有wordpress ajax接口
  • 网博士自助建站系统wordpress文章编辑器可视化
  • 个人网站平台搭建郑州核酸vip服务
  • 可以免费网络推广网站对网站的赏析
  • 怎么做网站设计方案网站建设编程语言
  • 常州免费网站制作wordpress设置首页标题描述
  • 学生网站建设的心得懒人学做网站
  • 辅助网站建设儿童教育自适应网站模板
  • 内链好的网站民众镇做网站公司
  • wordpress做appseo怎么做
  • 河北网站建设与制作网页制作网页设计
  • 乐清网站建设yq01嘉祥住房和城乡建设局网站
  • 企业网站形象建设苏州首页关键词优化
  • 滁州市建设工程管理处网站房屋装修效果图制作
  • 佛山响应式网站开发网站域名重要吗
  • wordpress手机端网站模板网站用html模拟图片
  • 网站建设项目实施方案进入网站后台代码
  • 哪些网站的网站怎么做的河南省住房和城乡建设厅投诉网站
  • 偏门网站建设淮安建设工程协会网站查询
  • 有经验的扬中网站建设山西建设监理协会网站
  • 在网上做试卷的网站衡水企业做网站推广