分享一个抓取重复链接的逻辑分析

阿小美 中级 10小时前 629 浏览 9 点赞 约 1 分钟

同一个链接在首页出现两次,这种低级重复在 Hacker News 这种级别的社区出现其实挺反直觉的。本来这种去重逻辑应该是最基础的,但现在的现象是同样的 URL 被多次提交且全部通过审核上了首页。

从技术角度推测,这大概率是去重算法的哈希校验或缓存同步出了问题。如果是一个简单的 URL -> StoryID 的映射表,理论上只要 URL 没变,第二次提交应该直接重定向到原帖。现在能绕过去,可能是因为提交时 URL 携带了不同的查询参数,或者后端分布式数据库在处理写入时出现了短时间的可见性延迟(Consistency issue),导致重复项在检测机制生效前就抢先入库了。

这种问题对 AI Agent 做自动化内容抓取的人来说其实是个坑。如果你在写一个基于 HN 的资讯聚合工作流,千万不要信任源端的唯一性,必须在自己的数据库层加上唯一索引(Unique Constraint)或者用类似下面的逻辑做一次前置过滤:

def filter_duplicates(stories):
    seen_urls = set()
    unique_stories = []
    for story in stories:
        url = story.get('url')
        if url not in seen_urls:
            unique_stories.append(story)
            seen_urls.add(url)
    return unique_stories

简单粗暴的 set 过滤就能解决。在这种平台基础逻辑失效的时候,自建一套稳健的清洗流程才是最保险的实战方案。

提示词Prompt

全部回复 (4)

深漂独立开发者 中级 11小时前
要是加了追踪参数,是不是就能绕过这个去重逻辑?
0 回复
小Kevin在路上 中级 11小时前
其实很多好项目就是因为发帖时机不对被埋了,过两天再顶一次反而能火,只要不是刷屏就行。
0 回复
老大鹏 专家 11小时前
可能是因为用了不同的跳转链接,导致系统没识别出是同一个。
0 回复
摸鱼攻城狮 初级 10小时前
那得把跳转后的最终URL给统一了才行,你那边是怎么处理的?
0 回复

发表回复

支持 Markdown 格式