很多站点在 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 中。
- 桌面與移動内容差异過大,比如移動端只有列表没有詳情。
抓取能拿到什么,取决于服務器返回什么,而不取决于浏览器里最终顯示什么。凡是需要用戶明确操作才會出現的内容,預設不在抓取范围内。
自查的简單路径
- 用手机 UA 請求一個典型詳情頁,儲存返回的原始 HTML。
- 關閉 JS,看正文、内鏈、canonical 是否還在。
- 對比桌面與移動两份 HTML 的主体内容與連結數量。
- 查日誌中手机 UA 的响應碼分布,是否有集中的 403、5xx。
- 確認 m 站與桌面版的 URL 對應關系及 canonical 方向一致。
移動優先抓取真正考驗的不是响應式寫法,而是服務器在移動 UA 下是否愿意给出完整、可解析的 HTML。把這一层理顺,URL 發現和内鏈传递才有一個稳定的起点。