为什么百度蜘蛛抓到的正文是空的
状态 200,标题也有,正文区域一片空白。
这不是抓取失败,是内容没在 HTML 里。
先确认“空”是哪一种
标题空、描述空、正文空,是三种问题。
标题空:模板没输出,或者被 UA 分流到了错误模板。
描述空:很多站本来就不写 description,不致命。
正文空:内容靠 JS 渲染,或者接口没返回。
用工具看正文里能不能搜到文章第一段的关键词,搜不到才是真空白。
四类结构
CSR 单页应用。初始 HTML 只有一个根节点,内容全靠 JS。
懒加载。滚动到可视区域才请求,蜘蛛不滚动。
接口鉴权。内容接口要登录或 Token,蜘蛛没有。
iframe 嵌套。正文在另一个文档里,抓取和权重传递都容易出问题。
一个对照思路
拿同一个 URL,分别用 Baiduspider 和 Googlebot 抓。
两个都空:大概率是 CSR,和 UA 无关。
百度空、Google 有:百度渲染能力弱,或者 UA 分流给了简化版。
两个都有但内容不同:查 UA 分流和移动适配。
怎么改
优先级:SSR > 预渲染 > 静态化 > 关键内容直出。
至少把标题、首段、核心正文放进初始 HTML。
短期改不了框架,可以给蜘蛛返回预渲染版本,但必须和用户看到的一致。给蜘蛛和用户不同内容,属于 cloaking。
改完用 蜘蛛模拟抓取 选 Baiduspider 复测,正文能搜到关键词才算通过。