搜尋抓取

搜尋蜘蛛抓取:移動端與桌面端内鏈差异造成的入口分叉核對

移動優先索引下,搜尋引擎多以移動 UA 抓取,但不少站点的移動端模板會裁掉侧栏、分頁與相關推荐,導致移動端可發現的入口少于桌面端。本文给出两端 HTML、渲染後 DOM 與抓取日誌的對比顺序,以及保留真實連結、用 Sitemap 兜底等調整建议。

搜尋抓取

搜尋蜘蛛抓取:移動端與桌面端内鏈差异造成的入口分叉核對

移動優先索引已经是常態,搜尋引擎主要用移動端 UA 抓取頁面。但很多站点的移動端模板是“精简版”:導航折叠、侧栏去掉、相關推荐减少、分頁換成“加载更多”。如果差异只在样式层,DOM 里仍有連結,影响有限;一旦模板层直接不輸出這些連結,移動端能發現的入口就會比桌面端少一截。

两端入口為什么會分叉

常见的情况是,桌面端模板和移動端模板由不同的人在不同時間维護。桌面端改版时加上的栏目入口、相關推荐、面包屑,移動端模板往往没有同步。另一種情况是為了移動端首屏速度,干脆把列表頁底部的詳情入口、翻頁連結删掉,改成滚動触發异步加载。這類改動的初衷可以理解,但抓取端看到的 DOM 里没有連結,就等于這條路径不存在。

常见的差异点

  • 汉堡菜單由 JS 点击後才寫入連結,未展開时 DOM 中没有 a href。
  • 移動端模板省略侧栏、面包屑或相關推荐模块。
  • 分頁被“加载更多”按钮替代,按钮触發請求而不是指向下一頁地址。
  • 轮播、Tab 只渲染第一屏内容,其余靠点击後异步加载。
  • 同一個栏目在两端指向不同 URL,例如带 m. 子域或多出移動端參數。
  • 移動端隐藏模块使用動態移除节点而非 CSS 隐藏,連結彻底不在 DOM 中。

核對顺序

  1. 取同一個 URL,分別用桌面 UA 和移動 UA 請求,儲存未执行 JS 的原始 HTML。
  2. 對比两端 HTML 中的 a href 集合,列出只在桌面端出現的連結。
  3. 對差异明顯的頁面,再取一次执行 JS 後的渲染 DOM,確認連結是“模板没輸出”還是“渲染没完成”。
  4. 按 UA 分组查看服務端抓取日誌,观察移動 UA 的抓取路径是否集中在少數栏目,入口覆盖是否明顯收窄。
  5. 用 Sitemap 與内鏈两個入口交叉核對,確認缺失的 URL 是否還能從其他路径進入。
  6. 抽查這些 URL 的返回狀態與正文内容,排除“進得来但頁面是空壳”的情况。

可以做出的調整

  • 關键入口在两端的模板中保持一致,不要依赖 JS 展開後才寫入連結。
  • 移動端導航可以折叠展示,但 HTML 里保留完整的連結列表,让抓取端能直接讀到。
  • 分頁優先使用真實連結;“加载更多”也保留對應頁碼的可訪問地址。
  • 列表頁首屏之外的内容,考虑在服務端先輸出一批可抓取連結。
  • 用 Sitemap 补上移動端缺失的入口,作為补充通道,而不是替代内鏈结构。
  • 移動端如果引入大量阻塞脚本,也會拖延抓取端拿到完整 DOM 的時間,需要一並检查。

观察與驗證

調整之後,建议按周對比两端 HTML 中的連結數量、移動 UA 抓取命中的栏目數,以及 Sitemap 中被實际抓取的比例。几項指标一起看,比單看某一項更能判断入口是否补齐。服務器稳定性同样值得留意:如果移動端頁面响應偏慢,抓取端可能提前結束渲染,鏈路本身没問题却依然拿不到連結。

两端的入口差异通常不是一次性的错誤,而是模板反复演進留下的副产品。定期做一次對比,比事後补救更省事。