27 个首页里 24 个有 main 标签,其中一个只装了 3% 的文字
main 标签在 2026-08-22 抓的 27 个首页里有 24 个在用,装的文字占全页中位数 83%,但跨度从 3.2% 到 97.0%,还有一个站发了两个可见的。

实测 · 2026-08-22 · 27 个首页 · 单次抓取 · 只解析地标元素
样本与口径:2026-08-15 起一直在用的那 30 个站,2026-08-22 每站首页抓一次,浏览器 UA。先记下交付 HTML 里出现了哪些分区地标元素,再数 <main> 里的可见文字字符数,跟整个 body 的可见文字字符数比。
27 个首页里有 24 个带 main 标签,<main> 里的文字占全页可见文字的中位数是 83%。真正有意思的是跨度:最低 3.2%(nextjs.org),最高 97.0%(substack.com)。有这个地标,和把内容放进去,是两件事。
怎么测的
每站一次 HTTP 请求,不渲染、不重试。纳入规则跑数前定死:状态 200、响应体不少于 10,000 字节、含 <body。30 个里 3 个没过 —— stackoverflow.com 和 medium.com 回 403,www.reddit.com 回的是 8,393 字节的空壳 —— 剩下 27 个首页。
文字口径:只数文本节点里的字符,剔除 script、style、noscript、template、svg 的内容,空白折叠后计数。另外用一套独立的正则抽取对其中四个站重跑了一遍对口径,两法差距在 1 个百分点上下。
main 标签在标准里是什么
HTML 标准 §4.4.14,2026-08-22 读到的原文只有一句:「The main element represents the dominant contents of the document.」同一节还有一条几乎没人去查的约束:「A document must not have more than one main element that does not have the hidden attribute specified.」
这条在这批数据里被踩到了一次。nextjs.org 的首页发了两个 <main>,都没有 hidden 属性,两个加起来装了 223 个字符,而整页是 6,902 个。
地标是一句关于「内容在哪」的声明。空的地标不是少了个功能,是说错了一句话。
页面到底有多少在 main 里面
按占比排出来不是一条曲线,是三堆。
| 站点 | 全页字符 | main 内 | 占比 |
|---|---|---|---|
| substack.com | 2,145 | 2,081 | 97.0% |
| linear.app | 8,911 | 8,435 | 94.7% |
| www.theverge.com | 18,834 | 17,602 | 93.5% |
| webflow.com | 23,607 | 21,027 | 89.1% |
| www.wikipedia.org | 5,692 | 4,825 | 84.8% |
| github.com | 7,118 | 4,489 | 63.1% |
| www.canva.com | 7,856 | 3,035 | 38.6% |
| nextjs.org | 6,902 | 223 | 3.2% |
带 <main> 的 24 个站里,13 个把八成以上的文字放了进去。6 个不到一半:nextjs.org 3.2%,然后是 www.canva.com、figma.com、www.notion.com、vercel.com、www.shopify.com,都落在 38% 到 46% 之间。后面这五个是营销首页,导航、大菜单和页脚本来就吃掉了大量文字 —— 那是设计选择,不是毛病。
Next.js 是另一回事。它首页有 6,902 个可见字符,落在两个 <main> 里的是 223 个:一句标语加一段主视觉文案。其余全部在外面。
三个连 main 都没有的首页
「没有」不是同一种失败。这三个里有两个是整批里最好读的页面。
| 站点 | 全页字符 | 它用的是什么 |
|---|---|---|
| developer.mozilla.org | 5,903 | 8 个 <article>,nav / header / footer 齐全 |
| railway.com | 7,016 | 8 个 <section>,nav / header / footer 齐全 |
| news.ycombinator.com | 3,623 | 没有地标,也没有标题 |
MDN 首页没有 <main>,用的是 8 个 <article>。Hacker News 什么都没有:没有 main、没有 nav、没有 header、没有 footer,同一次抓取的另一遍解析显示它连一个标题都没有。它同时是这份名单上被读得最多的页面之一。
整批的地标覆盖是这样的:nav 25/27、footer 25/27、header 24/27,而 <article> 只有 7 个站在用。光 Ars Technica 一个站就发了 40 个 <article>,一条新闻卡片一个。
这次测不到的部分
测不出「占比低就有问题」。抽取库和答案引擎不是读到 <main> 就停,多数走的是文字密度与位置的启发式,一个地标都没有的页面照样能被干净抽出来。我们没有拿任何抽取器去测这 27 个页面,所以这里没有任何一句话说 Next.js 被 AI 爬虫少读了。
另外,分不开「读者看得见的文字」和「标记里的文字」。屏幕上收起来的大菜单,它的字仍然进了我们的分母 —— 那正是几个营销首页落在 40% 附近的原因。换一套计数规则,这些数就会变,而那一套我们没做。
还有:每个站只测了一页。同一个域名下的文档页和文章页,多半用的是另一种包法,这次完全看不见。
对做站的人意味着什么
这是对着一套模板做十分钟的检查,不是一个项目。
- 把「别人是为它来的那部分」整个包进一个
<main>,然后把字符占比数一次。 - 一个文档里只留一个可见的
<main>—— 这是标准的要求,不是偏好。 - 别加了地标却把内容留在外面。那就是 Next.js 那个形状,它对任何一个消费者都说错了话。
- 别一上来就认定「没有 main」是机器读不懂你的原因。先看你的页面到底交付了什么。
在这些标记被解释之前,爬虫从你的网址拿到的究竟是什么,正是 AI 爬虫可达性检查报出来的东西。两篇邻居:AI 爬虫从前端渲染的站上拿到多少字量的是字数本身,文档页比首页还空那篇发现更空的那一页往往不是你以为的那一页。
常见问题
你们是怎么测的
2026-08-22 每站首页抓一次,浏览器 UA,不执行 JavaScript。从交付 HTML 里数地标元素,再把 <main> 内的文本字符数与整个 body 的文本字符数相比,剔除 script、style、noscript、template、svg 的内容。
main 标签是干什么的
按 HTML 标准的说法,它「represents the dominant contents of the document」—— 页面里除去页头、导航、侧栏和页脚之后剩下的那部分。
一个页面能有两个 main 吗
除非多出来的那些都带 hidden。标准写的是:一个文档里不得有超过一个不带 hidden 的 main。这 27 个站里有一个发了两个可见的。
用 main 对 AI 抓取有帮助吗
不知道,这次也没测。能说的是:27 个大站里 24 个在用这个地标,而其中四分之一的站,它装的还不到半页。


