Google移动优先索引要求HTML结构严格合法:<main>必须唯一非空,<section>需以<h2>起始且独立建模,<time datetime>须用ISO格式标注时间,<title>和description须每页动态生成。

爬虫不看“好不好看”,只认结构是否合法、语义是否明确、内容是否可定位。 任何视觉优化、JS 动态填充、CSS 隐藏展示,对 Google 移动优先索引都无效;错一个 <main>、漏一个 datetime、<h2> 跳级,就等于主动放弃首屏主内容的索引权重。
为什么 <main> 必须唯一且非空
Google 移动优先索引从 2023 年起已 100% 启用,它不会逐行解析 <body>,而是直接跳过 <header>、<nav>、<footer>,定位第一个合法 <main> 开始提取文本、链接和标题层级。
-
<main>为空、被 JS 动态插入、或嵌套在<footer>里 → 触发 “结构冲突” 警告,整块主内容权重打折 - 页面存在多个
<main>→ 爬虫无法判断主次,降权处理 - SPA 页面仅留
<div id="root"></div>→ 等同于告诉爬虫“这里没主内容” - 登录弹窗、广告位塞进
<main>→ 判定为“元信息污染”,主内容可信度下降
<section> 不是视觉分块,是独立建模单元
爬虫把每个 <section> 当作一个可单独识别、索引、甚至富摘要展示的内容实体,不是 CSS 布局工具。
- 每个
<section>必须以<h2>或带aria-labelledby的元素起始;纯<section><p></p></section>不参与主题建模 - 新闻列表页中,应为每条新闻包裹独立
<section>;整个列表套一个<section>→ 爬虫误判为“一篇长文”,而非“10 篇独立报道” -
<section>和<article>不可混用:<article>表示可独立分发、复用、被 RSS 抓取的内容;<section>只是逻辑子模块,无此能力
<time datetime> 是机器可读时间的唯一有效写法
“2024年3月15日”对爬虫只是普通字符串,需靠 NLP 推断;而 <time datetime="2024-03-15">2024年3月15日</time> 自带标准格式的 datetime 属性,Google 新闻/博客类页面会据此提升时效性排序权重。
立即学习“前端免费学习笔记(深入)”;
-
datetime值必须符合 ISO 8601 格式(如2024-03-15、2024-03-15T14:30),不能是中文日期或模糊表述 - 缺失
datetime属性的<time>标签,等同于未声明时间,不参与时效性建模 - 新闻页、博客页、商品上架页等强时效场景,必须用
<time datetime>显式标注发布时间
<title> 和 meta name="description" 必须每页动态生成
硬编码全站共用 <title>首页</title> 是最常见、杀伤力最强的 SEO 陷阱。搜索引擎会认为所有页面主题雷同,直接降权或只收录首页。
-
<title>控制在 50–60 字符(含空格),核心词前置,例如<title>HTML表格SEO优化技巧 | 前端实战笔记</title> -
meta name="description"每页手写,120–155 字符,开头嵌主词,用自然语句说明本页解决什么问题 - 服务端渲染(如 Next.js)、静态生成(如 Astro)或 CMS 中,必须从路由参数或数据上下文注入,不能写死在模板里
- 禁止出现引号、emoji、重复句式,避免被判定为低质模板化内容
真正影响抓取能效的,从来不是 class 名是否优雅、CSS 是否 BEM、JS 是否模块化,而是 <main> 是否真实包裹了人眼所见的正文、<section> 是否承载了可建模的语义粒度、datetime 是否精确到秒——这些才是爬虫每天真实校验的硬指标。漏掉任何一个,就等于在索引入口处亲手拆掉一块砖。



















