全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python爬虫数据去重方案_hash与集合应用【指导】

用 hash 而不是原始字符串去重,因 URL 等字段存在空格、换行、编码差异等问题,直接比较易漏判;hash 可归一化处理,提升稳定性,但需注意碰撞风险及内存管理、标准化、去重时机和分布式适配。

为什么用 hash 而不是直接存原始字符串去重?

爬虫抓取的 URL、标题、正文等字段常含空格、换行、编码差异(如 %20 和空格),直接字符串比较容易漏判重复。用 hash 统一归一化后再比对,更稳定。
但注意:hash 不是万能的——不同内容可能产生相同哈希值(碰撞),不过在单机爬虫场景下,用 hashlib.md5()hashlib.sha256() 几乎可忽略该风险。

set 存哈希值时内存爆了怎么办?

高频爬虫(如每秒百条)持续往 set 里加 bytes 哈希值,几小时后可能吃光几 GB 内存。这不是算法问题,是数据生命周期没管好。
实操建议:

  • 按时间窗口滚动清理:比如只保留最近 24 小时的哈希值,用 deque + 时间戳配合 set 实现
  • 改用布隆过滤器(bloomfilter 库):内存占用低一个数量级,支持百万级去重,但有极小误判率(不漏判,可能把新数据当重复)
  • 落地到轻量数据库:如 sqliteUNIQUE 索引列存 md5(url),重启不丢,还支持查重历史

URL 去重必须先标准化再哈希

同一个页面可能有无数种 URL 表达:https://a.com/?x=1&y=2https://a.com/?y=2&x=1https://A.COM/x/,直接哈希会当成不同项。
标准化步骤不能少:

from urllib.parse import urlparse, urlunparse, parse_qs, urlencode

def normalize_url(url): parsed = urlparse(url.lower()) # 协议和域名转小写 query_dict = parse_qs(parsed.query) # 自动去重参数顺序、合并同名参数 normalized_query = urlencode(query_dict, doseq=True) return urlunparse(( parsed.scheme, parsed.netloc, parsed.path.rstrip('/'), # 去除末尾斜杠 '', '', normalized_query ))

之后再对 normalize_url(url) 的结果做 hashlib.md5(...).hexdigest()

去重逻辑放在哪一层最稳妥?

别在解析完就立刻去重,也别拖到入库前才做——中间环节(如管道、中间件、存储前钩子)都可能出错或跳过。
推荐位置:

  • Requests 发起前:检查待请求 URL 是否已爬过(适合广度优先)
  • Response 解析后、提取 item 前:对响应体做 hashlib.sha256(response.body).hexdigest(),防镜像站/缓存页重复
  • Item Pipeline 最末端:用 item['url_hash'] = hashlib.md5(item['url'].encode()).hexdigest(),再查库或集合

真正难的是多进程/分布式场景——这时单机 set 失效,得换 Redis 的 SETBF.ADD,且哈希值必须带业务前缀避免冲突。


# python  # redis  # 编码  # 爬虫  # 内存占用  # .net  # 为什么  # red 


相关文章: 如何彻底删除建站之星生成的Banner?  建站之星伪静态规则如何设置?  家庭建站与云服务器建站,如何选择更优?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何通过云梦建站系统实现SEO快速优化?  如何通过宝塔面板实现本地网站访问?  大连网站制作公司哪家好一点,大连买房网站哪个好?  ,sp开头的版面叫什么?  建站之星2.7模板快速切换与批量管理功能操作指南  如何在阿里云虚拟服务器快速搭建网站?  如何在云虚拟主机上快速搭建个人网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  临沂网站制作企业,临沂第三中学官方网站?  如何选择PHP开源工具快速搭建网站?  如何在景安服务器上快速搭建个人网站?  如何用景安虚拟主机手机版绑定域名建站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  建站之星北京办公室:智能建站系统与小程序生成方案解析  建站之星各版本价格是多少?  如何高效配置IIS服务器搭建网站?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何有效防御Web建站篡改攻击?  网站制作服务平台,有什么网站可以发布本地服务信息?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何快速建站并高效导出源代码?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  招贴海报怎么做,什么是海报招贴?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  制作网页的网站有哪些,电脑上怎么做网页?  招商网站制作流程,网站招商广告语?  建站之星代理费用多少?最新价格详情介绍  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  中山网站制作网页,中山新生登记系统登记流程?  历史网站制作软件,华为如何找回被删除的网站?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  临沂网站制作公司有哪些,临沂第四中学官网?  实例解析angularjs的filter过滤器  手机网站制作与建设方案,手机网站如何建设?  C#如何使用XPathNavigator高效查询XML  如何通过VPS建站无需域名直接访问?  如何快速重置建站主机并恢复默认配置?  建站上传速度慢?如何优化加速网站加载效率?  如何选择高性价比服务器搭建个人网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  建站上市公司网站建设方案与SEO优化服务定制指南  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  建站之星后台密码遗忘或太弱?如何重置与强化?  如何快速搭建自助建站会员专属系统? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。