必须唯一且直属于,因google移动优先索引(2023年起100%启用)直接定位首个合法抓取首屏内容,错放或重复将导致爬虫误判主内容、降权或空抓取。

main 标签必须唯一且直属于 body
Google 移动优先索引从 2023 年起已 100% 启用,它不解析整个 DOM,而是直接定位第一个合法 <main></main> 开始抓取首屏文本、链接和标题层级。错放或重复就等于告诉爬虫“主内容不可信”。
-
<main></main>必须是的直接子元素,不能嵌套在<header></header>、<footer></footer>或任意<div> 内 <li>页面中 <code>document.querySelectorAll('main')返回长度必须为 1,且不能为空(SPA 中 SSR 输出需含真实内容) - 常见错误:CMS 模板复用导致页头也带
<main></main>;Next.js 页面中<main></main>被 JS 动态插入但未触发重抓取 - 验证方式:用
curl -s URL | grep '<main>'</main>查看源码是否含有效标签;DevTools 中运行上述 JS 检查数量 - 每个
<section></section>必须以<h2></h2>–<h6></h6>起始,或带aria-labelledby指向有效标题元素 - 新闻列表页应为每条新闻单独包裹
<section></section>,而非整个列表套一个 —— 否则爬虫误判为“一篇长文” - 商品详情页中,参数表、用户评价、相关推荐等区块若各自独立可分发,才适用
<section></section>;广告位、客服入口等辅助信息请用<div> 或 <code><aside></aside> - 注意:
<article></article>表示可独立分发、RSS 抓取的内容(如博客正文),<section></section>是逻辑子模块,二者不可混用 -
<h1></h1>必须唯一,且必须出现在<main></main>内部(可嵌套在<main><header><h1></h1></header></main>中) - 文本需与
<title></title>逻辑自洽:产品页用 “USB-C 多功能扩展坞”,不能写 “欢迎光临我的小站” - 禁止用
display: none隐藏冗余<h1></h1>—— 这是明确的隐藏文本风险行为 - 标题层级必须连续:从
<h1></h1>到<h2></h2>到<h3></h3>,跳级(如<h1></h1>直接到<h4></h4>)会破坏结构解析,辅助技术可能跳过该层级 -
<time></time>的datetime属性必须符合 ISO 8601 格式(如2024-03-15T14:30),否则 Google 新闻类页面不提升时效权重 - 所有
<img>必须有alt:信息图需描述文字内容,装饰图可用alt="",但“下载 PDF”按钮里的图标不能空 - 动态生成图片时,JS 插入的
<img>必须同步补全alt,否则 Lighthouse “Accessibility” 审计失败 - 避免用 CSS 改变视觉大小来“伪装”标题层级,
<h2></h2>就是<h2></h2>,别为了样式降级成<div class="h2"> <p>重构不是换标签游戏,而是重新校准内容与机器之间的契约。最常被忽略的点是:爬虫不看你写了多少语义标签,而看你有没有破坏它们的嵌套逻辑和使用前提 —— 一个错位的 <code><main></main>,比十个没用的<div> 更伤权重。</div>
section 必须带语义锚点,否则不参与建模
<section></section> 不是视觉分块工具,而是爬虫识别“可独立建模内容单元”的信号。纯容器式使用(比如只包一个 <p></p>)会被忽略,整块内容失去主题权重。
h1 必须唯一、精准、且位于 main 内部
爬虫把 <h1></h1> 当作页面核心主题信号,但它只在合理语义上下文中生效。塞进 <footer></footer> 或 <header></header> 会被判定为关键词堆砌,直接触发降权。
time 和 img 的机器可读属性不能省略
“2024年3月15日”对爬虫只是普通字符串,<time datetime="2024-03-15"></time> 才是它能直接提取并用于时效性排序的结构化数据;同理,<img> 缺 alt 不是体验问题,是内容缺失。











