27 个首页里 24 个有 main 标签,其中一个只装了 3% 的文字

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

抓取与收录4 分钟读完2947 次阅读
27 个首页里 24 个有 main 标签,其中一个只装了 3% 的文字

实测 · 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.commedium.com 回 403,www.reddit.com 回的是 8,393 字节的空壳 —— 剩下 27 个首页。

文字口径:只数文本节点里的字符,剔除 scriptstylenoscripttemplatesvg 的内容,空白折叠后计数。另外用一套独立的正则抽取对其中四个站重跑了一遍对口径,两法差距在 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.com2,1452,08197.0%
linear.app8,9118,43594.7%
www.theverge.com18,83417,60293.5%
webflow.com23,60721,02789.1%
www.wikipedia.org5,6924,82584.8%
github.com7,1184,48963.1%
www.canva.com7,8563,03538.6%
nextjs.org6,9022233.2%

<main> 的 24 个站里,13 个把八成以上的文字放了进去。6 个不到一半:nextjs.org 3.2%,然后是 www.canva.comfigma.comwww.notion.comvercel.comwww.shopify.com,都落在 38% 到 46% 之间。后面这五个是营销首页,导航、大菜单和页脚本来就吃掉了大量文字 —— 那是设计选择,不是毛病。

Next.js 是另一回事。它首页有 6,902 个可见字符,落在两个 <main> 里的是 223 个:一句标语加一段主视觉文案。其余全部在外面。

三个连 main 都没有的首页

「没有」不是同一种失败。这三个里有两个是整批里最好读的页面。

站点全页字符它用的是什么
developer.mozilla.org5,9038 个 <article>,nav / header / footer 齐全
railway.com7,0168 个 <section>,nav / header / footer 齐全
news.ycombinator.com3,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。标准写的是:一个文档里不得有超过一个不带 hiddenmain。这 27 个站里有一个发了两个可见的。

用 main 对 AI 抓取有帮助吗

不知道,这次也没测。能说的是:27 个大站里 24 个在用这个地标,而其中四分之一的站,它装的还不到半页。

27 个首页里 24 个有 main 标签,其中一个只装了 3% 的文字