语义化html标签是爬虫解析的核心依据,为结构合法性门槛且必须唯一、直属于,表独立内容单元,需配标题才具语义,纯套嵌或js渲染空容器将导致索引失效。

因为爬虫不渲染页面,只依赖标签名和嵌套关系做结构建模——语义标签相当于直接告诉它“这是什么”,省去大量上下文推测成本。
爬虫解析 HTML 时根本不看 CSS 或 JS
它拿到的是原始 HTML 字符串,逐节点读取标签名、属性、父子关系。用一堆 <div> 套来套去,等于交出一张没标注的地图;而 <code><main></main>、<article></article>、<nav></nav> 这类标签,是直接写在代码里的语义说明书。
- Google 移动优先索引(2023 年起 100% 启用)默认跳过
<header></header>、<nav></nav>、<footer></footer>,只从<main></main>提取首屏文本、链接和标题层级 -
<time datetime="2024-03-15"></time>比纯文本 “2024年3月15日” 多一个机器可读的 datetime 属性,新闻类页面漏掉这个,富摘要和“最新结果”排序会延迟 2–7 天 - 用
<figure><figcaption></figcaption></figure>包裹有意义图片,才能触发图文联合分析;单纯加alt只让爬虫“知道图里有什么”,但没结构信号
<main></main> 不是加分项,是结构合法性门槛
没有 <main></main>,或用错位置,爬虫可能把页脚备案号当主内容索引;有它但塞了登录框,权重直接打折。
-
<main></main>必须唯一,且必须是的直接子元素,不能嵌套在<header></header>、<section></section>或其他容器里 - 验证方式:DevTools 中运行
document.querySelectorAll('main'),结果长度必须为 1;SSR/SSG 构建后用curl -s URL | grep '<main>'</main>检查生成 HTML 是否含有效内容 - SPA 页面若只留
<main><div id="root"></div></main>且无服务端渲染内容,爬虫拿到空容器,等同于无主内容
<article></article> 和 <section></section> 混用会稀释内容权重
二者语义不可互换:<article></article> 表示可独立分发、复用、被单独索引的内容单元(如一篇博客、一条新闻);<section></section> 只是主题相关区块,必须配 <h2></h2> 或 aria-labelledby,否则爬虫视为空白语义块。
- 博客列表页中,
<main></main>应包裹整个列表,每篇用独立<article></article>封装,而非全塞进一个<section></section> - 纯
<section><p></p></section>是结构缺失信号,不会进入索引库 -
<section></section>内部跳级(如<h1></h1>后直接跟<h4></h4>),爬虫中断层级推断,后续段落归为“无主题区块”
最容易被忽略的点:所有语义容器(<main></main>、<article></article>、<section></section>)若仅含 JS 渲染的空白 <div>,等于贴假标签——爬虫拿到的是空容器,结构信号彻底失效。</div>











