爬虫依赖HTML语义标签而非CSS类名定位核心内容,如<main>、<article>等标签明确标识主体,提升文本权重与解析深度,而<div class="...">无语义,无法替代。

爬虫不是靠“猜”结构,而是依赖标签的语义角色做内容优先级判断——<main> 里的文字比 <footer> 里的更可能被当作正文索引。
爬虫如何用语义标签定位核心内容
百度、Google 等主流爬虫在解析 HTML 时,会构建 DOM 树并标注每个节点的“语义角色”。当遇到 <article> 或 <main> 这类明确标识主体内容的标签,爬虫会自动提升其子节点的文本权重,并延长对该区域的解析深度(比如更仔细提取 <h2>、<p> 内容);而 <aside> 或 <nav> 区域则常被降权或跳过内链提取。
- 不写
<main>不报错,但爬虫可能把<div class="content">和页脚广告一起当普通块处理 -
<header>中的<h1>比散落在<div>里的<h1>更易被识别为页面主标题 - 多个
<section>嵌套时,爬虫会尝试建立层级关系(如用父<section>的<h2>关联子<section>的<h3>)
为什么 <div> + class 无法替代语义标签
纯 CSS 类名(如 class="main-content")对爬虫是不可见的语义信号。爬虫不解析 CSS 文件,也不执行 JavaScript,只读取 HTML 标签名和部分属性(如 aria-label、role)。即使你写了 <div class="article">,它在 DOM 树中仍是无角色的通用容器。
-
<article>自带“独立可分发内容”的语义,爬虫可据此生成摘要、判断是否适合聚合到新闻源 -
<nav>明确告诉爬虫:“这里全是导航链接”,便于提取站内路径、发现未被外链指向的页面 - 用
<section>替代<div>并不能“自动提升 SEO”,但能避免爬虫把章节标题和广告文案平权对待
容易被忽略的兼容性与误用点
语义标签本身不改变渲染,但错误嵌套或滥用会干扰爬虫对结构的理解。例如把 <footer> 放在 <article> 外部却包含文章作者信息,爬虫可能误判作者归属;又或者在 <main> 里塞了两个 <header>,导致主标题识别混乱。
立即学习“前端免费学习笔记(深入)”;
-
<main>应该每页只出现一次,且不能是<article>、<aside>、<footer>、<header>、<nav>的子元素 -
<article>可以嵌套,但嵌套层级过深(>3 层)会让爬虫放弃推断主题关联性 - 部分旧版浏览器(如 IE9 以下)不识别语义标签,但不影响爬虫——它们只关心标准 HTML5 解析规则
真正起作用的不是“用了多少语义标签”,而是关键内容是否落在正确语义容器中。一个没用 <nav> 但导航链接都放在 <header> 里的页面,可能比乱用十个 <section> 却把正文塞进 <aside> 的页面更容易被正确索引。



















