搜索引擎依赖语义化标签的硬性规则而非猜测:<main>具唯一性与嵌套限制,<article>标识可独立分发内容,<nav>影响链接权重,<time datetime>是机器识别时间的唯一可靠方式。

搜索引擎不是靠“猜”内容,而是靠标签的语义契约来定位主干、排除噪音、建立关系——用错标签,等于给爬虫递假地图。
为什么 <main> 比 <div class="main"> 更容易被识别为正文
浏览器和爬虫对 <main> 有硬性解析规则:每个页面只允许一个,且不能嵌套在 <article>、<aside>、<footer> 等容器内。一旦你写成 <div class="main">,它就退化成普通块级元素,和旁边十几个 <div class="wrapper"> 完全同质,爬虫必须依赖 CSS 类名、DOM 位置甚至文本密度去推测——这个过程不可靠,尤其在动态渲染或 JS 加载延迟时容易漏抓。
常见错误现象:
- 页面中出现多个
<main>,Chrome DevTools 控制台会警告,Google Search Console 可能降权该页的正文可信度 - 把导航栏或广告位塞进
<main>,导致正文权重被稀释 - 用
<section>替代<main>,虽然结构看起来“分块了”,但爬虫无法锚定唯一核心区域
<article> 和 <section> 的边界在哪?搜索引擎怎么区分它们
<article> 表示可独立分发、复用的内容单元(如一篇博客、一条新闻、一个商品卡片),自带隐含的元数据上下文(比如发布时间、作者、分类);<section> 只是主题一致的内容区块,没有独立性要求。Google 在提取富摘要(Rich Results)时,会优先从 <article> 中提取 <time datetime>、<author> 或 <h1>,而 <section> 即使包着标题,也不会触发结构化数据识别。
立即学习“前端免费学习笔记(深入)”;
使用场景差异:
- 产品图册页面:每个商品用
<article>,整个“热销榜单”区域用<section> - 马里奥游戏复刻页:关卡说明、角色设定、操作指南各自是
<article>;而“游戏背景故事”“开发日志”这类辅助性内容适合放在<section> - 误用典型:把整页内容拆成 5 个
<section>,却不包裹任何<article>,导致 Google 无法判断哪部分是“可索引主体”
<nav> 不只是“放链接的地方”,它是爬虫建站地图的关键入口
搜索引擎会把 <nav> 内的链接视作站点核心路径,优先抓取并赋予更高 PageRank 权重。如果导航用 <div class="nav"> 实现,即使链接都存在,爬虫也可能归类为“装饰性链接”或“JS 动态生成链接”,延后甚至跳过抓取。
参数与兼容性影响:
- 多个
<nav>是允许的(如顶部主导航 + 页脚次级导航),但需用aria-label区分用途,否则爬虫可能混淆主次 - 内部链接必须是有效
<a href>,空链接(href="#")、JS 跳转(href="javascript:void(0)")会被忽略 - 移动端折叠菜单若用
<details><summary>包裹<nav>,需确保初始 HTML 已包含完整链接,而非仅靠 JS 注入
<time datetime> 这个属性不是可选的,它是机器读取时间的唯一可靠方式
搜索引擎不解析中文日期文本(如“2026年9月21日”或“昨天”),只有 <time datetime="2026-09-21">今天</time> 这种格式才能被准确映射为时间戳。缺失 datetime 属性的 <time> 标签,在 Structured Data Testing Tool 中直接报错,也无法参与“最新内容”排序。
容易踩的坑:
- 写了
<time>发布于2026-09-21</time>,但没加datetime属性 → 爬虫当普通文本处理 - 用相对时间(如
datetime="2026-W38")→ 部分旧版爬虫不支持 ISO 周格式 - 在
<article>外层单独放<time>→ Google 可能无法关联到该文章发布时间
真正起作用的,从来不是标签名本身,而是标签+属性+嵌套关系构成的最小语义闭环。一个没 datetime 的 <time>,和一个没 href 的 <a> 一样,只是个空壳。



















