搜尋抓取

孤儿頁面:没有内鏈指向的 URL,蜘蛛靠什么找到它

没有内鏈指向的頁面,蜘蛛仍可能通過 Sitemap、外鏈或歷史记錄發現它,但抓取频率往往很低。本文讲清楚孤儿頁面的發現路径、怎么用爬虫和日誌把它們找出来,以及哪些頁面值得补内鏈、哪些應该主動屏蔽。

搜尋抓取

孤儿頁面:没有内鏈指向的 URL,蜘蛛靠什么找到它

站内经常出現這種情况:某一批 URL 能被蜘蛛抓到,日誌里也有记錄,但你在頁面上怎么点都找不到入口。這類没有内鏈指向、只能靠外部途径被發現的頁面,通常被称為孤儿頁面。它們不一定有問题,但它們的抓取路径和正常頁面完全不同,值得單獨拿出来看。

孤儿頁面是怎么被蜘蛛發現的

没有内鏈,不等于蜘蛛一定不知道這個 URL。常见的發現途径有這几種:

  • Sitemap:XML Sitemap 里直接列出的 URL,是孤儿頁面最主要的發現来源。
  • 外部連結:別的站点鏈過来,蜘蛛顺着外鏈就進来了,哪怕站内一條連結都没有。
  • 歷史抓取记錄:URL 以前被收錄過,蜘蛛會按舊记錄回訪。
  • 站内搜尋與篩選參數:某些篩選组合會生成新的 URL,被蜘蛛在抓取时试探到。
  • JavaScript 渲染出的連結:首屏 HTML 里没有、渲染後才出現的連結,也可能把 URL 带出来。
  • 重定向:301、302 指向的目标 URL,同样會被记錄下来。

這些路径有一個共同点:它們不依赖站内導航结构。所以頁面即使被抓到,位置也很脆弱——一旦 Sitemap 更新失誤或者外鏈失效,蜘蛛就可能不再回来。

被抓到和能被持續抓取是两件事

孤儿頁面最典型的表現是抓取频率极低。正常頁面有内鏈不断被蜘蛛经過,等于持續给它投票;孤儿頁面唯一的入口在 Sitemap 里,蜘蛛每次都要重新讀一遍 Sitemap 才能想起来。在抓取額度有限的情况下,這類 URL 往往排在後面。

另外,孤儿頁面通常也缺少内部連結传递的上下文。蜘蛛只看到一個孤立的 URL,不知道它在站内處于什么位置、属于哪個主题,這對理解頁面内容没有帮助。

怎么找出站内的孤儿頁面

  1. 導出 Sitemap 里的全部 URL。
  2. 用爬虫工具從首頁出發,抓一遍站内可点击到的全部連結。
  3. 两份清單做差集:只在 Sitemap 里、不在爬取结果里的,基本就是孤儿頁面。
  4. 再和服務器日誌對照,看這些 URL 是否真的被抓過、抓取频率如何。

反過来也值得查一遍:有些頁面在内鏈里,却没有進 Sitemap。這類不算孤儿,但同样需要確認是否值得被收錄。

补内鏈的几種做法

  • 频道頁或聚合頁:把同類内容集中列出,是最省事的入口来源。
  • 面包屑導航:让每個詳情頁都有一條回到上級栏目的路径。
  • 正文语境連結:在相關内容里自然地鏈過去,比堆在侧邊栏更有效。
  • 相關推荐、上一篇/下一篇:适合内容量大的站点,能顺带把深层頁面拉近一些。

补内鏈的目标不是让每個頁面都堆满連結,而是让蜘蛛從入口出發,能顺着一條合理的路径走到它。連結放得自然、位置稳定,比數量更重要。

把 Sitemap 当作补充手段,而不是唯一入口。内鏈才是蜘蛛長期回訪的路径。

有些孤儿頁面是有意為之

並不是所有孤儿頁面都要救。篩選參數頁、測試頁、已下线的活動頁、登入後才能看的頁面,本来就不适合被大量抓取。這類頁面更适合用 robots.txt 或 noindex 明确處理,而不是硬塞進内鏈里,白白占掉抓取額度。

所以處理孤儿頁面的第一步不是补連結,而是先分清楚:這個 URL 是希望被持續抓取,還是希望它安静一点。分完類再動手,後面會省很多事。