整理蜘蛛池入口页时,经常会遇到这样的细节:同一个目标 URL 在页面里出现了三四次——导航里一次、正文里一次、页脚里又一次。于是问题来了:搜索蜘蛛会不会把每一次出现都当成一次发现,从而重复抓取,白白消耗抓取额度?
同一个 URL 在一页里出现多次,通常只会被抓一次
主流搜索引擎在解析 HTML 时,会先把页面里提取到的链接放进一个待抓取队列,并做基本去重。也就是说,同一张入口页里出现多次的同一个 URL,通常只会形成一条抓取任务,不会因为你写了五遍就抓五遍。
不过这个去重是以搜索引擎认为的同一个 URL 为准。字符串完全一致的 href,一般会被合并;而只是看起来像同一个页面的不同写法,很可能被认为是不相同的 URL。
容易被当成不同 URL 的几种写法
- 大小写不同:/Page 和 /page
- 带不带 www:example.com 和 www.example.com
- 结尾有没有斜杠:/a 和 /a/
- http 与 https 混用
- 带跟踪参数:?from=footer 与不带参数
- 锚点不同:#top 与 #faq(多数情况下锚点会被忽略,但写法混乱不利于排查)
锚文本不同会影响去重吗
一般不会。搜索引擎做的是 URL 层面的去重,同一 URL 配不同锚文本出现多次,仍只会形成一条待抓取记录。不过锚文本对理解目标页面主题有一定帮助,所以关键位置用描述性文字仍然值得做。
那重复链接是不是就不用管了?
不完全是。重复链接通常不会带来惩罚,但会带来一些实际麻烦:
- 浪费页面体积:入口页本来是给蜘蛛看链接的,重复内容多了,真正需要被发现的目标 URL 就被挤到后面。
- 日志难读:日志里同一路径反复出现,会让你误判蜘蛛的实际抓取范围。
- 信号被稀释:同页多个不同写法指向同一内容,容易让搜索引擎在 URL 规范化上做出与你预期不一致的选择。
排查和整理的做法
- 先把入口页里所有 href 抓下来,做一次纯字符串去重,看看去重前后的数量差多少。
- 再按上面的规则做一次规范化:统一协议、统一 www、统一结尾斜杠、去掉无意义跟踪参数,然后再比对一次。
- 确认入口页链接总量是否合理。一个页面塞几百上千条链接,单页能被有效处理的比例通常会下降,不如拆成多个入口页。
- 把规范化后的 URL 同步到 sitemap,让发现路径更清晰,而不是靠入口页反复堆砌。
- 过一段时间用日志验证:看蜘蛛实际抓了哪些 URL,与你放进去的是否一致。
需要提醒的是,去重是搜索引擎的常规处理,不是可以利用的技巧。同一个 URL 多写几遍不会提高被抓取的概率,也不代表能被收录。
小结
同一入口页里重复出现的目标 URL,通常不会被重复抓取,所以不必为多写了几遍担心;但重复、写法混乱的链接会让页面效率变低、日志变难读。把链接做规范化、控制单页数量、配合 sitemap 使用,才是更稳妥的做法。