做死链排查或者 URL 盘点的人都遇到过这种事:明明去过重,清单里还是有一堆”看着一样”的地址;换个工具再跑一遍,数字又变了。问题多半不在去重那一步,而在前面的写法没统一——同一个页面能写出七八种 URL,机器当然把它们当成不同页面。

同一个页面能写出多少种地址

  • 协议不同:http:// 和 https://;
  • 主机不同:带 www. 和不带 www.;
  • 末尾斜杠:/about 和 /about/;
  • 路径大小写:/News/ 和 /news/;
  • 带跟踪参数:?utm_source=xxx、?spm=xxx;
  • 带锚点:#comment、#top;
  • 默认文件:/index.php、/index.html;
  • 默认端口::80、:443。

这些地址在浏览器里打开都是同一个页面,但作为字符串它们完全不同。十万条清单里,这类变体占两三成很常见,所以去重前不归一化,等于白做。

三条归一化规则

层级 做法 注意
协议 统一成站点实际使用的那个,多数现在都是 https 先确认站点没做 http 跳转的例外页
主机 全部小写,去掉末尾的点,www. 与裸域名二选一,去掉 :80 / :443 以站点 canonical 写的那个为准
路径 去末尾斜杠或统一加斜杠(二选一即可),合并重复斜杠,去掉 # 之后的部分 部分 CMS 路径区分大小写,改小写前先抽样验证

规则本身不复杂,难点是要统一。团队里两个人按两套规则整理,合表时又是一场灾难,所以规则最好写成一页文档,谁整理都一样。

参数别一刀切

utm_source、utm_medium、gclid、spm、from、share 这类跟踪参数可以整段删;id、page、p、cat、s 这些是内容定位参数,删了就是另一个页面。稳妥的做法是先把所有参数名统计出来,按出现频次排序,人工过一遍黑白名单,再批量执行。这一步花二十分钟,能避免误删几万条有效链接。

顺序错了等于白干

  1. 归一化:协议、主机、路径按上面的规则统一;
  2. 去重:按完全一致的字符串去重,保留第一条;
  3. 抽样验证:随机抽 100 条,看原来”看起来一样”的几组是否已经合并;
  4. 再分层:按路径深度、栏目、参数有无分成几档,方便后面按优先级处理。

先分层再去重是个常见错误:分层时按原始字符串分的组,去重后组内又空了一批,得重来。

最枯燥的两步交给工具

归一化和去重都是规则固定、量又大的活,手工搓 Excel 公式很容易出错,尤其是路径大小写和参数这两块。文本去重工具能直接吃百万级清单,百万文本去重工具就是按这个场景做的;网址批量转域名可以先把主机名单独抽出来校对,两头配合基本不用手写公式。有个小经验:先转域名核对主机层,再回原表做路径归一化,主机层错了后面全错。

行动建议

下次整理 URL 清单,先花十分钟抽样:随机抽 100 条,看有多少种写法。如果变体超过两成,直接先做归一化,别急着去重。规则定下来之后固化成脚本或者固定流程,同样的活下次几分钟就能跑完,比每次临场发挥靠谱。相关功能在软件工具一览里能对照看。

相关推荐

关键词网址采集器:始于2007年的原创采集软件,支持百度、搜狗、360、神马、谷歌、必应。微信/QQ:13327215,飞机:gjcwzcjq

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注