很多站点在 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 发现和内链传递才有一个稳定的起点。