空或缺失<main>标签会导致首屏内容不被索引,因Google移动优先索引跳过<header><nav><footer>直接提取首个合法<main>,其必须唯一、非空、包裹真实主体内容且不含干扰信息。

为什么为空或缺失会直接导致首屏内容不被索引
Google 移动优先索引从 2023 年起已 100% 启用,它不解析整个 <body>,而是跳过 <header>、<nav>、<footer>,直接定位第一个合法 <main> 开始提取文本和链接。没这个标签,等于没给爬虫画出“主内容坐标”。
常见错误包括:<main></main> 空标签、<main> 被 JS 动态插入但未触发重抓取、<main> 嵌套在 <footer> 里、页面存在多个 <main>——全部触发 Lighthouse 的“结构冲突”警告,主内容权重直接打折。
-
<main>必须唯一,且包裹所有真实可索引的主体:正文、核心 CTA、关键数据表格等 - SPA 页面中,服务端渲染(SSR)必须输出非空
<main>;只留<div id="root"></div>就等于告诉爬虫“这里没主内容” - 登录弹窗、广告位、客服电话塞进
<main>→ 判定为“元信息污染”,可信度下降
为什么没就等于没写
就等于没写
<section> 在爬虫眼里不是视觉分块,而是“可独立建模的内容单元”。它必须带语义锚点,否则会被忽略——纯 <section><p>...</p></section> 不参与主题建模,也不提升富摘要概率。
使用场景明确:单篇博客正文、商品详情页的规格参数区、FAQ 列表中的每一条问答项,都应各自包裹一个 <section>。
立即学习“前端免费学习笔记(深入)”;
使用 Puppeteer + Chrome 将 HTML 渲染为中文 PDF,自动处理图表等待、Tab 展开、动画、测高、白边消除、防分页,适用于看板、报表、网页和交互图表转 PDF。
- 每个
<section>必须以<h2>或带aria-labelledby的元素起始 - 新闻列表页中,应为每条新闻单独套
<section>,而非整个列表只包一层——否则爬虫误判为“一篇长文”,而非“10 篇独立报道” -
<section>和<article>不可混用:<article>表示可独立分发、RSS 抓取的内容;<section>只是逻辑子模块,无此能力
为什么跳级或重复会让爬虫放弃理解页面重点
搜索引擎靠 <h1>–<h6> 和语义标签定位内容主次。一个页面出现两个 <h1>,或从 <h1> 直接跳到 <h3>,等于告诉爬虫“我也不知道重点在哪”,Lighthouse “Document structure” 审计会直接报错。
- 每页仅一个
<h1>,且必须含页面核心主题词,例如文章页用<h1>HTML表格SEO优化技巧</h1> -
<h2>–<h6>按逻辑递进,不跳级;子标题中可自然带关键词,但别堆砌“SEO HTML 优化 教程” -
<time datetime="2024-03-15">2024年3月15日</time>是机器可读时间的唯一有效写法;纯文字“2024年3月15日”需靠 NLP 推断,时效性排序权重大幅降低
为什么和写死是杀伤力最强的 SEO 陷阱
硬编码全站共用 <title>首页</title>,搜索引擎会认为所有页面主题雷同,直接降权或只收录首页。这不是“效果差”,是明确的惩罚信号。
实操上,这两个标签必须从路由参数或数据上下文动态注入,不能写死在模板里。
-
<title>控制在 50–60 字符(含空格),核心词前置,例如<title>HTML表格SEO优化技巧 | 前端实战笔记</title> -
<meta name="description">每页手写,120–155 字符,开头嵌主词,用自然语句说明本页解决什么问题 - 服务端渲染(如 Next.js)、静态生成(如 Astro)或 CMS 中,必须走数据驱动生成,而非模板默认值
最常被忽略的其实是 <main> 内容的真实性——它必须在 HTML 源码中真实存在、非空、不含干扰信息。爬虫不执行 JS,也不做语义猜测,只认结构。所谓“看起来像主内容”的 <div class="content">,对它而言就是一块空白。


















