dom树深度超6层时搜索引擎爬虫会主动截断解析,因流式解析中每层嵌套消耗内存与时间,弱网或移动端下易触发超时终止,导致第6层以下内容不进索引;语义标签可重置嵌套计数,表格嵌套和spa服务端渲染缺失会加剧问题。

DOM树深度超6层,搜索引擎爬虫会主动截断解析,<h2></h2>以下的内容大概率不进索引——这不是配置问题,是爬虫底层资源限制导致的硬性截断。
为什么6层是关键阈值
爬虫解析HTML时采用流式构建DOM,每层嵌套都要分配内存、计算样式上下文、检查布局影响。移动端或弱网环境下,解析器会在第6层后因超时或内存压力终止后续标签处理。实测显示:<div><div><div><div><div><div><h2>被跳过</h2></div></div></div></div></div></div>这种结构中,<code><h2></h2>及其子节点根本不会出现在爬虫的DOM快照里。
- Chrome DevTools → Elements 面板右键任意节点 → “Show DOM properties”,查看
ownerDocument下的nodeType和层级路径,超过6必须拆解 - 纯
<div>堆叠最危险;<code><section></section>、<article></article>、<header></header>等语义标签能重置嵌套计数,因为它们自带语义边界 - 表格嵌套尤其敏感:
<td>内再套<code><div>会加剧重排开销,加速触发截断 <h3>SPA服务端渲染缺失<main>会直接失效</main> </h3> <p>SSR/SSG项目中,如果首屏HTML未包含<code><main></main>,爬虫无法锚定主体内容区,会退回到无语义的<div id="root">去猜测——结果通常是把导航栏或广告位当成正文索引。JS动态注入<code><main></main>晚于500ms,等同于没写。- 用curl或Lighthouse抓取首屏HTML源码,搜索
<main></main>确认存在且唯一 - Next.js用户检查
getServerSideProps或generateStaticParams是否确保<main></main>在初始响应中 - 重复出现
<main></main>会被标记为结构混乱,整页权重下调
标题层级断裂让爬虫放弃推导大纲
搜索引擎靠
<h1></h1>–<h6></h6>与语义容器共同生成文档大纲(Document Outline)。一旦跳级(如<h2></h2>后直接<h5></h5>)或<h1></h1>错放在<footer></footer>里,爬虫就无法建立可信层级,转而降低该区块的索引优先级。-
<h1></h1>必须在<main></main>或其祖先节点内,且不能被<aside></aside>、<nav></nav>包裹 -
<section></section>必须以<h2></h2>起始,子模块用<h3></h3>递进;用<h4></h4>开始意味着它属于上一级<section></section>的内部段落 - Lighthouse报“
<h1> count</h1>”或“<h1> matches <title></title> </h1>”失败,说明结构信号已不可信
真正难调的不是某行代码,而是结构决策点:比如要不要把
<table>里的操作按钮抽成独立<code><section></section>,或者能否接受把<h2></h2>降为<h3></h3>来维持连续层级——这些选择不报错,但会让爬虫在抓取深度、内容主次、索引权重三个维度同时打折。 - 用curl或Lighthouse抓取首屏HTML源码,搜索











