必须唯一且不得嵌套在或中,因其是爬虫定位“用户真正该看到内容”的语义起点,缺失或错放会导致首屏文本、链接、标题层级误判;它必须直接为的子元素,仅包裹可独立分发的主体内容,重复或嵌套将触发“结构混乱”降权信号。

为什么必须唯一且不能嵌套在或里
因为爬虫靠
常见错误现象:main被包在header里(常见于模板复用)、main重复出现(SPA 渲染覆盖 SSR 输出)、main里塞了导航栏和登录框。
- 每个 HTML 文档只允许一个
main,且必须直接位于body下级(不能是div或section的子元素) -
main内只放主体内容:文章正文、产品参数表、博客列表等可独立分发的信息单元 - 验证方式:打开 DevTools → Elements 面板运行
document.querySelectorAll('main'),结果应为[<main>…]</main>且长度为 1 - SSR/SSG 构建后,用
curl -s URL | grep '<main>'</main>检查生成 HTML 是否含有效main标签
多个或与不一致会触发什么降权信号
与不一致会触发什么降权信号
爬虫不计算权重分数,但会标记“结构混乱”并下调 E-E-A-T 评估——这不是警告,是实际影响索引深度和点击率的隐性惩罚。
典型错误场景:CMS 模板未清理导致页头和正文各有一个h1;Next.js 中写死 <h1>{{ title }}</h1> 但 SSR 时 title 为空;title 是 “React Server Components 原理”,h1 却是 “欢迎光临我的小站”。
-
h1必须唯一,且语义上精准匹配页面主题词(如产品页用 “USB-C 多功能扩展坞”,而非 “首页”) -
h1必须出现在main内部,不能仅存在于header中 -
title和h1文本需逻辑自洽:前者是页面意图锚点,后者是正文主主题提示,冲突时 Lighthouse 会报 “h1does not match page title” - 禁用
display: none或visibility: hidden隐藏冗余h1,这属于明确的隐藏文本风险行为
用还是?语义错位如何稀释内容权重
article 和 section 不是视觉分组工具,它们向爬虫传递的是内容可分发性与逻辑隶属关系。混用会让算法无法区分主次,尤其在聚合页或 CMS 输出中极易出错。
常见误用:把整个侧边栏套进article、用section替代main包裹全文、博客列表页每个条目不用article而用div。
-
article表示能独立存在、复用、RSS 推送的内容单元(单篇博客、新闻条目、商品卡片),必须自带明确主题(通常含自己的h1或h2) -
section表示同一主题下的逻辑区块(如“安装步骤”“用户评价”),必须配h2–h6标题,纯section+p是结构缺失信号 - 博客列表页:外层用
section包裹整体,每篇用article;单篇文章页:全文用一个article,内部小节用section+ 对应层级标题 - 滥用
article(例如把页脚版权也包进去)会让爬虫误判为大量低信噪比内容,反向降低单页可信度
图片 SEO 的隐藏开关:+为什么比单独加alt更关键
单纯写 alt 只能让爬虫“知道图里有什么”,但加上 figure 容器和 figcaption 描述,等于给图片打上结构化标签,触发图文联合分析模型——这是 Google 图片搜索排名的核心信号之一。
常见疏漏:把 img 直接扔进 p 或 div、用 CSS 隐藏 figcaption、对信息图写 “图1” 这类无意义 alt。
- 有意义图片(信息图、代码截图、数据图表)必须用
figure包裹,figcaption写清用途(例:<figcaption>Chrome DevTools 中 display: contents 的实际渲染效果</figcaption>) - 装饰性图片(分割线、背景纹理)设
alt="",否则爬虫会尝试索引不存在的内容 -
img直接放在p或div中,alt文本权重会大幅衰减;必须置于figure内才能获得完整语义通道 -
figcaption不可省略或留空,它不是可选描述,而是图文关系的显式声明
article 包住一段 JS 动态渲染的空白 div,等于贴了个假标签;爬虫不会执行 JS,它只看静态 DOM,而那个 DOM 里什么都没有。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











