做蜘蛛池投放之前,很多人会先准备一批目标URL。清单看起来数量不少,但真正去重之后,往往能少掉两三成。重复地址不一定是你手动复制的,更多是URL写法不统一造成的:同一个页面,在清单里以不同形式出现,搜索蜘蛛会把它当成多个地址处理。
重复URL常见的几种形式
先看几个最常见的差异,很多清单里会同时出现:
- 协议不同:http://example.com/page 和 https://example.com/page;
- 主机名不同:带 www 和不带 www;
- 尾斜杠差异:/page 和 /page/;
- 大小写混用:路径里出现 /Page 和 /page;
- 参数顺序不同:?a=1&b=2 和 ?b=2&a=1;
- 跟踪参数:带 utm_source、from、spm 等推广参数;
- 锚点:/page#section 和 /page;
- 编码差异:中文或空格有时被编码成 %E4%B8%AD,有时直接写原文;
- 默认端口:example.com:80 和 example.com。
为什么建议投放前先归一化
搜索蜘蛛识别页面主要看URL。同一个页面如果以多个URL形式出现,抓取预算会被分散,日志里也会出现大量看似不同、实际相同的请求。归一化的目的不是改变网站结构,而是让投放清单尽量干净,把有限的抓取机会留给真正不同的页面。
这里要区分一件事:去重和归一化解决的是“投哪些地址更合理”,不直接等于收录。它减少的是无效抓取和重复提交,至于最终是否收录,还要看页面质量、站点整体情况和搜索蜘蛛的抓取安排。
归一化时优先处理的几类规则
- 统一协议:如果站点已经全站https,清单里就不要混入http地址。保留http会造成一次额外跳转,也容易和https版本重复。
- 统一主机名:确定主域是带www还是不带www,然后统一成一种。不要两个版本都投。
- 去掉默认端口:80和443端口通常不需要写出来,除非站点确实使用非标准端口。
- 统一尾斜杠:目录页和文件页的处理方式不同。先看服务器对尾斜杠的响应,是301还是200,再决定保留哪种写法。
- 参数排序和清理:对参数按字母排序,去掉不影响内容的跟踪参数。如果参数确实影响页面内容,比如分页、筛选,就要单独评估,不要一刀切删掉。
- 路径大小写:服务器如果区分大小写,就保留真实路径;如果不区分,统一成小写更方便去重。
- 去掉锚点:投放清单里一般不需要带 # 后面的部分,搜索蜘蛛抓取的是锚点前的地址。
- 编码统一:中文或特殊字符建议统一成一种编码形式,避免同一个地址出现两种写法。
去重后还要做的检查
归一化完成不等于可以直接投。建议再抽查一批URL,确认最终地址返回200,而不是经过多次跳转;确认没有被 robots.txt 或 noindex 挡住;确认页面不是空壳或软404。如果清单里有大量301,最好先决定投旧地址还是新地址,不要两个都投。
另外,保留一份原始清单和归一化后的清单,方便后续对比。投放后如果发现某些地址一直没有抓取,可以回头检查是不是归一化时漏掉了参数,或者服务器对某个版本做了跳转。
一个简单的操作顺序
- 导出原始URL清单,先不要急着提交。
- 按上面的规则做归一化,统一协议、主机、尾斜杠、参数和编码。
- 对归一化后的清单去重,保留唯一地址。
- 随机抽取一部分,手动访问或看日志,确认返回状态和robots情况。
- 按优先级分批投放,不要一次全量推出去。
- 投放后观察服务器日志和抓取变化,再决定下一批的节奏。
归一化主要是整理投放清单,站内链接最好也逐步统一规范。两边规则不一致时,搜索蜘蛛仍然可能发现重复地址,只是投放端少了一部分无效请求。
URL去重和归一化看起来是小事,但在URL数量多的时候,能直接影响投放清单的质量。先把地址整理干净,再考虑分批和优先级,通常比直接堆量更稳妥。