<main>必须唯一、非空且为<body>直接子元素,否则爬虫跳过正文或降权;嵌套在<header>/<footer>、多个<main>、含登录弹窗或仅含<div id="root">均触发结构冲突或元信息污染。

main 是现代搜索引擎(尤其是 Google 移动优先索引)的硬性结构锚点,不是“加分项”,而是内容能否被当主体索引的准入门槛——没它、错用或为空,正文大概率被跳过。
为什么 main 必须唯一且非空
Google 不解析 class 名或 CSS 布局来猜哪段是正文;它直接定位第一个合法 main 开始提取首屏文本、链接和标题层级。这是 2023 年起 100% 启用的移动优先索引规则,不是启发式猜测。
-
main嵌套在header或footer中 → 触发“结构冲突”警告,整块内容权重打折 - SPA 路由切换后未销毁旧
main节点 → DOM 中残留多个 → 全页可信度评分下降 - 服务端返回的 HTML 中
main仅含<div id="root"></div>→ 爬虫看到空容器,直接跳过该区域 - 把登录弹窗、广告位、客服电话塞进
main→ 被判为“元信息污染”,主内容信号稀释
article 和 section 的语义边界直接影响索引粒度
二者都分区块,但搜索引擎对它们的建模逻辑完全不同:article 表示可独立分发、RSS 订阅、富摘要展示的内容单元;section 只是主题分组,无独立索引价值。
- 新闻列表页用一个
section包裹全部文章 → 爬虫误判为“一篇长文”,而非“10 篇独立报道” - 每个
article缺少自己的h1或h2→ 失去标题-正文-时间联合建模基础 - 滥用
article套按钮、侧边栏、推荐位 → 触发“语义污染”标记,主内容权重被摊薄 -
section内部无h2或aria-labelledby→ 被视为无效语义单元,不参与主题建模
time、figure+figcaption 是长尾词与图文联合建模的关键信号
纯文本日期或图片说明对爬虫只是字符串;加上合规语义标签,才构成机器可读的结构化事实。
立即学习“前端免费学习笔记(深入)”;
-
<time datetime="2024-03-15">2024年3月15日</time>→ Google 新闻类页面据此提升时效性排序权重;"2024年3月15日"→ 需靠 NLP 推断,准确率低 -
figure+figcaption是图文绑定的最小闭环:搜索引擎将figcaption文本、img的alt、周围段落联合建模,显著提升图搜命中率 -
figcaption放在figure中间或嵌套其他标签 → 语义断裂,联合建模失效 - 装饰性图片(分割线、背景图)未设
alt=""→ 被识别为缺失内容,触发可访问性与 SEO 双重警告
最容易被忽略的是服务端输出阶段:JS 渲染再完整,如果初始 HTML 的 main 是空的、h1 在 header 里没同步进 main、或 article 标签被 SSR 框架漏掉,爬虫就永远看不到你精心写的语义结构——算法再先进,也得先拿到真实 DOM 才能运行。



















