搜索抓取

抓取路径里的循环与死胡同:搜索蜘蛛为什么会反复走同一段路

很多站点的抓取问题不是链接不够,而是链接成环:分页、筛选、归档互相指向,蜘蛛在同一批地址上反复往返;另一些页面抓到了却没有可走的下一步。文章讲清循环和死胡同的常见形态,给出用日志、抓取工具定位的办法,以及 canonical、分页去重、Sitemap 补路径等收口动作。

搜索抓取

抓取路径里的循环与死胡同:搜索蜘蛛为什么会反复走同一段路

搜索蜘蛛靠链接走站,路径越顺,URL 被发现的成本越低。但不少站点的问题不是“链接太少”,而是链接太多太乱:蜘蛛在几个页面之间来回跳,或者走进一个只有入口、没有出口的角落。这类结构问题不会让站点立刻掉排名,却会实打实消耗抓取配额,让真正需要更新的 URL 排在后面。

什么算“打转”

简单说,就是同一批 URL 被反复经过,而每次经过都没有带出新地址。蜘蛛本身不会迷路,它只是按规则走;如果链接关系形成了闭环,它就会顺着这个闭环一遍遍循环,直到配额用完或者主动放弃。

几种常见的循环形态

参数自我复制

  • 分页链接里带着排序参数,翻到第二页又生成一组新的排序参数地址;
  • 筛选条件可以两两组合,A+B 和 B+A 生成两个 URL,指向同一批内容;
  • 会话 ID、跟踪参数写在链接里,同一页面每次被抓取都像“新地址”。

分页与栏目互相指向

“上一页 / 下一页”如果同时出现在列表顶部和底部,且都是完整 URL,蜘蛛会在第 1、2 页之间高频往返。再加上“最新”“推荐”这类模块一起指回第一页,循环就更明显。

归档、标签、日历交叉引用

归档页链向文章,文章底部又挂着标签和归档入口,标签页再链回文章。单看每一层都合理,合起来就是一个闭环。

死胡同:抓到了,但没有下一步

死胡同不是 404,而是页面正常返回、却没有可继续走的链接。典型是纯图片页、需要登录才展开的内容、把导航做成按钮的脚本渲染页。蜘蛛抓完这一页,路径就断了。偶尔出现无妨,成片出现就等于浪费入口。

怎么把环找出来

  1. 用抓取工具从首页模拟走一遍,看最多能发现多少唯一 URL,再和 Sitemap 里的数量对比;
  2. 看服务器日志里同一 IP 段对同一批 URL 的请求次数,重复偏高的那一组往往就是环;
  3. 检查分页、筛选、排序的 URL 规则,确认每翻一页是否都新增参数;
  4. 抽查栏目页的“相关阅读”“猜你喜欢”,确认没有全部指回上级页面。

日志里不全是搜索蜘蛛

排查前先分清访问者。自建爬虫、站内监控、第三方采集工具的 UA 里也可能带“spider”“bot”字样,请求频率也不低。它们不参与 URL 发现,却会占用服务器资源,让日志看起来像“蜘蛛在打转”。核对方式不复杂:看 IP 归属和反向解析是否匹配官方网段,再看请求是否遵守 robots.txt。

收口的几个动作

  1. 参数页统一用 canonical 指回主地址,对无检索价值的组合做访问限制;
  2. 分页只保留一套链接,不要顶部底部重复输出;
  3. 标签、归档页控制数量,只保留有聚合价值的;
  4. 给死胡同页面补一条明确的返回入口,比如回到栏目或上一篇;
  5. 更新 Sitemap,让蜘蛛有一条不依赖内链的发现路径。
循环和死胡同大多不是一次改版造成的,而是模板长期叠加的结果。排查看趋势,改的时候一次动一处,方便对照日志里的请求变化。

抓取配额是有限的,路径上的浪费会直接体现为“新页面发现慢”。先把打转的地方收住,再谈扩大收录规模,顺序更合理。