搜尋抓取

移動優先抓取:蜘蛛打開你的站点时,看到的是哪一份 HTML

搜尋引擎的移動優先抓取已是預設设定,蜘蛛多以手机 UA 發起請求。本文拆解响應式、獨立 m 站與動態渲染三種實現下爬虫實际能拿到什么,梳理移動端常见的重定向、彈窗與懒加载拦截,並给出用原始 HTML 自查抓取入口的步骤。

搜尋抓取

移動優先抓取:蜘蛛打開你的站点时,看到的是哪一份 HTML

很多站点在 PC 上抓得好好的,移動端却出現「抓取量不少、有價值頁面很少」的情况。原因往往不是内容质量,而是蜘蛛在移動端看到的那份 HTML,跟你在 PC 上看到的不一样。移動優先抓取说的就是這件事:爬虫預設用智能手机的身份訪問你的站点,並以此作為理解頁面的主要依據。

移動優先不是一個開關

它不是你在某處打開的一個選項,而是主流搜尋引擎多年来逐步切換的預設行為。對站点来说,需要接受一個前提:蜘蛛第一次拿到的那份 HTML,通常来自移動 UA 的請求。桌面版本的 HTML 仍會被讀到,但更多是补充。

蜘蛛以什么身份来

日誌里通常能同时看到两類訪問:一類是手机 UA,一類是桌面 UA。前者占比更高,且往往承担主要抓取;後者多见于静態资源、舊連結或歷史行為。判断时不要只看 UA 字符串,還要看同一 URL 在两種 UA 下返回的内容是否一致。

如果站点做了 UA 分流,返回给手机 UA 的頁面應该包含與桌面版等價的主体内容,而不是一個「請下载 App」或「請用电脑訪問」的空壳。

三種移動實現的差异

响應式

同一套 URL、同一份 HTML,靠 CSS 适配。對抓取最友好:URL 不分裂,内鏈、canonical、结构化資料只有一份,蜘蛛不需要在两個地址之間反复判断。

獨立 m 站

m.example.com 與 www.example.com 是两套地址。這里容易出現几種問题:m 站頁面 canonical 指向自己而不是桌面版,或者桌面版指向 m 站,導致信号摇摆;m 站導航少了一部分栏目,蜘蛛顺着走时發現不了;m 站只给摘要,不返回完整正文。

動態渲染或混合

服務端先给一份較空的 HTML,再靠 JS 填充内容。抓取阶段能拿到多少,取决于渲染是否被排上。若渲染必需的资源被 robots.txt 屏蔽、接口需要登入、或首屏内容要等用戶滚動、点击才加载,頁面就可能長期停在空壳狀態。

移動端會額外讀到的资源

和 PC 一样,蜘蛛會拉取决定渲染的 CSS、JS、图片等文件。移動端常见的額外因素包括 viewport 配置、字体文件,以及按屏幕尺寸做條件加载的组件。把渲染必需的资源挡在 robots.txt 外面,等于让蜘蛛看到一個残缺頁面。

几個容易被忽略的拦截

  • 進站即彈全屏 App 引導,遮住正文。
  • 移動 UA 請求被重定向到下载頁或應用商店。
  • 服務器按 UA 或 IP 段返回 403、驗證碼。
  • m 站正文延迟加载,且不在首屏 HTML 中。
  • 桌面與移動内容差异過大,比如移動端只有列表没有詳情。
抓取能拿到什么,取决于服務器返回什么,而不取决于浏览器里最终顯示什么。凡是需要用戶明确操作才會出現的内容,預設不在抓取范围内。

自查的简單路径

  1. 用手机 UA 請求一個典型詳情頁,儲存返回的原始 HTML。
  2. 關閉 JS,看正文、内鏈、canonical 是否還在。
  3. 對比桌面與移動两份 HTML 的主体内容與連結數量。
  4. 查日誌中手机 UA 的响應碼分布,是否有集中的 403、5xx。
  5. 確認 m 站與桌面版的 URL 對應關系及 canonical 方向一致。

移動優先抓取真正考驗的不是响應式寫法,而是服務器在移動 UA 下是否愿意给出完整、可解析的 HTML。把這一层理顺,URL 發現和内鏈传递才有一個稳定的起点。