先分清「发现」和「抓取」是两件事
搜索蜘蛛在入口页上看到链接,只完成了一步:把这个 URL 记进待抓取队列。至于它会不会马上抓、抓几次、多个入口页上的同一个 URL 要不要合并处理,取决于后续的去重和调度逻辑。很多人看到入口页被访问了,就默认目标 URL 一定会被抓,这两件事最好分开看。
同一个 URL 出现在多个入口页,通常会被合并
主流搜索引擎在入队之前一般会做 URL 规范化:协议、域名大小写、末尾斜杠、会改变页面内容的参数、锚点等,都可能被归一处理。也就是说,同一批目标 URL 放在十个入口页上,多数情况下只是给了队列十次「发现该 URL」的机会,而不是让它被抓十次。
- 规范化后完全相同的 URL:一般只保留一份抓取计划。
- 只差排序、追踪码之类的无关参数:多数会被视作同一个地址。
- 真正不同的 URL(路径不同、内容不同):会各自排队。
什么情况下会出现明显的重复抓取
- 入口页给出的 URL 形态不一致,比如 http 与 https、带不带 www、带不带默认参数,被当成不同地址。
- 目标 URL 自身做了多域名或多路径的镜像,又没有 canonical 指向主版本。
- 入口页每次刷新都生成一批随机参数的链接,抓取队列被这些形态各异的 URL 填满。
- 页面结构频繁变动,搜索蜘蛛反复回来核对,短时间内看起来像重复抓取。
这些情况里真正被浪费的是抓取配额,而不是「多发现了一次」本身。
怎么安排入口页与目标 URL 的对应关系
- 一个目标 URL 固定一个形态。先确定协议、域名和参数规则,所有入口页统一输出同一形态。
- 入口页之间做内容区分。哪怕链接的是同一批 URL,正文、锚文本和分类角度也可以不同,减少成片的近似页面。
- 控制入口页与目标 URL 的数量比例。目标 URL 少而入口页极多时,边际收益会很快下降。
- 留一份明确的对应清单。记录哪些 URL 由哪些入口页给出,方便后续对照抓取情况。
几个容易被误读的信号
入口页日志里出现多次访问,不一定说明链接被当成了新 URL,也可能是搜索蜘蛛在重抓入口页本身,或者在做缓存校验。反过来,目标 URL 只被抓过一次,也不代表入口页没起作用——很多页面本来就不需要反复抓。判断入口页有没有价值,应该看目标 URL 是否进入过抓取记录,而不是看访问次数多少。
把入口页当成「降低发现门槛的辅助手段」,而不是保证抓取或收录的开关,预期会稳一些。
验证时看什么
可以在服务器日志里按爬虫 UA 过滤,分别统计入口页与目标 URL 的请求量、状态码和时间分布,再和站点地图、主动推送的提交记录对照。如果目标 URL 长期没有任何请求记录,优先检查入口页里的链接形态是否统一、是否被 robots 规则挡住、以及页面是否需要脚本渲染才会出现链接。若只是抓取次数偏少但确实被抓过,通常不必急着调整,先观察一到两周的走势再判断。