搜尋抓取

抓取路径里的循环與死胡同:搜尋蜘蛛為什么會反复走同一段路

很多站点的抓取問题不是連結不够,而是連結成环:分頁、篩選、归档互相指向,蜘蛛在同一批地址上反复往返;另一些頁面抓到了却没有可走的下一步。文章讲清循环和死胡同的常见形態,给出用日誌、抓取工具定位的办法,以及 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,让蜘蛛有一條不依赖内鏈的發現路径。
循环和死胡同大多不是一次改版造成的,而是模板長期叠加的结果。排查看趋势,改的时候一次動一處,方便對照日誌里的請求變化。

抓取配額是有限的,路径上的浪費會直接体現為“新頁面發現慢”。先把打轉的地方收住,再谈扩大收錄規模,顺序更合理。