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

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


















