以下是来自 Catalin Rosu 的客座文章,他和一些同事一起 挖掘了大量数据,关于网站的 HTML 内容。这是最近的一项同类研究,结果非常吸引人。我发现将顶级结果与我原本猜测会获胜的结果进行比较尤其有趣。
我们都经历过这种情况。我们尝试改进我们的 HTML 代码,使其简洁、美观且易于阅读。我们这样做是为了追求更好的语义和更好的可访问性,以便每个人都能使用它。这是我们的首要任务。而且我们总是有疑问
- 构建标记的最佳方法是什么?
- 其他人是如何做到的?
我的脑海中一直萦绕着这样的问题。随着新网络技术的出现,我想知道人们如今是如何编写标记的。因此,我与我在 AWRCloud 的几位同事合作,并得出了一个包含来自 Google 前 20 名结果的 800 多万个网页的数据集。
此前的研究
早在 2005 年,HTML5 规范的编辑 Ian Hickson 就对略微超过 10 亿份文档的样本进行了分析,以了解网络的构成。10 亿是一个巨大的数字,但对 Google 来说,没有什么是不可能的。通过海量的文档,他提取了关于流行的类名、元素、属性和相关元数据的重要信息。杰出的成果后来发表为 Web Authoring Statistics,至今仍是最有影响力的网页创作研究。
最近,在 2008 年,Opera 元数据分析和挖掘应用程序 爬虫 MAMA 最终分析了大约 350 万个 URL。这项令人印象深刻工作的作者 Brian Wilson 通过发布详细说明页面结构(包括 HTML、CSS 和 JavaScript)的结果来扩展了这项研究。
Web Authoring Statistics 中的一项后来被证明对正在进行的 HTML5 开发工作至关重要的分析是 这些 HTML 文档中最流行的类名的列表。Opera MAMA 爬虫还搜索了最常见的类名,并根据 Google 的结果,他们还发布了关于赋予元素的流行 ID 属性值的相关结果。
这项研究为讨论带来了什么?
这项研究的数据来自 8,021,323 个索引页面,这些页面是从大约 3000 万个关键词的 Google 前 20 名结果中收集的,这些关键词是根据关键词量选择的。这意味着:我们有 3000 万个关键词。我们针对每个关键词运行了 Google 搜索,并获取了前 20 个结果的 URL,并将它们添加到列表中,并删除了重复项。
我们只能假设这些网页与普通网民的相关性非常高。这是基于这些网站很可能很受欢迎,并且流量很大,这与其搜索结果排名相符。
数据有多新?
最新的数据集来自 2016 年 5 月 20 日。
这项新的研究永远无法超越 Google 在 2005 年进行的先前研究。它也不是要超越 Opera 的伟大研究。它是为了找到关于互联网上最受欢迎和最成功的网页实际使用的标记的新见解和相关见解。
那么,如今的 HTML 页面平均看起来是什么样子?请查看下面的屏幕截图,并 查看研究以获取完整统计数据。
统计数据
根据我们的研究,我们发现平均网站索引页面使用了 26 种不同的元素类型。

在大多数页面上使用的 26 个元素,按频率排序

<head>
和 <html>
在所有网站上都使用。<body>
在 99% 的情况下使用,这有点令人惊讶——也许是一个非常大的网站,出现了一个奇怪的错误?列表底部的表格元素仍然出现在几乎三分之一的所有网站上,这令人惊讶。在指定页面使用哪个版本的 (X)HTML 的文档类型声明中,最新的 HTML5 文档类型显然处于领先地位。

如果我们查看所有专门用于告知浏览器或搜索引擎有关网站及其样式的信息的元素,我们发现了大约 1.75 亿个元素,以下是它们的细分情况

1.05 亿个内容分区的元素的细分如下

<h3>
是最流行的标题元素和整体内容分区元素。在 10 亿个文本内容元素中

<div>
占据了主导地位。网络的未来是什么?
我们网页开发人员和网页内容创建者对使用情况、统计数据和浏览器支持感到好奇和兴趣。这些是导致 2005 年类名发现的原因,这些名称如今被称为最流行的 HTML5 标签。
网络发展迅速。这并非新鲜事,但可能会让人感到不知所措。趋势每年都在变化,作为网页内容创建者,需要动力和努力才能跟上时代的步伐。想想十年前标记和网页平均情况是什么样子,以及如今的现代网页是什么样子。
我们还利用这项研究来观察新兴技术,例如 Web Components。虽然 Web Components 允许作者创建任意命名的元素,但我们可以查找用于创建 Web Components 的标准元素。

没有人能够预测未来。我们只能猜测十年后网页的平均情况会是什么样子。下次我们进行这项研究(我们正在考虑每季度进行一次)时,我们会看到 Web Components 等内容兴起吗?
同样,完整的数据集在这里。
“列表底部的表格元素仍然出现在几乎三分之一的所有网站上,这令人惊讶。”为什么这令人惊讶?表格并没有被弃用。它们是您应该用来显示表格数据的语义方式。我相信很多网站都有需要表格的数据。
尽管说实话,互联网上很多表格都用于页面布局,但我们不应该责怪表格元素。
我写了那句话——是的——我确实认为三分之一的网页包含表格数据令人惊讶。
说真的,Chris?很多数据仍然可以轻松高效地以表格形式表示,并且尽管响应性很差,但客户仍然对它们有一种扭曲的爱。我制作过的几乎每个网站都在某个地方使用了至少一个表格。例如,电子商务网站,几乎每个网站都会在某个地方使用表格,无论是产品详细信息还是运输信息。
我认为这里最令人惊讶的事情是,一个如此深入参与网络行业的人没有注意到网站上表格内容的持续普遍存在。
我还想补充一点,我对不允许我对某些事情感到惊讶感到惊讶。
恕我直言,我同意Chris的观点。我认为那里没有那么多表格数据。例如,查看Yahoo.com,那里有很多混合内容,但他们仍然使用
<table role="presentation">
来解决样式修复问题,而不是用于表格数据。大家好,
也许令人惊讶的是需要在索引页面上精确显示表格数据。不要忘记以上信息仅适用于索引页面。
我在这里想到的是当前的布局设计趋势以及它们如何(并不真正)适合表格数据。
div和网格系统是否比表格更受欢迎?
它绝对算得上令人惊讶。表格存在有效用例并不等于三分之一的网站都需要表格数据。
我几乎无法想象一个普通网站会在表格中显示什么内容。
同样令人惊讶的是,似乎有些网站使用
<table>
但不使用<td>
Neopets可能稍微扭曲了平均值。它们已经很多年没有进行重新设计了,并且它们的每个页面都使用多个嵌套表格进行格式化。每个。单个。页面。都有。几个。嵌套的。表格。仅仅想到它就让我感到恶心,而且它是我小时候第一次学习编写HTML和CSS的地方。直到今天,我的代码仍然尽可能地保持简洁、字面和极简主义,以作为无声的反抗。
我认为
<title>
占比97%更令人惊讶,因为<body>
允许省略标签,但<title>
**不允许**。我想,body占比99%证明这些页面是作为已提供的文档进行分析的,以及
document.ready
后的DOM(其中100%的页面都有body)。我想知道这会如何影响事情。我很好奇10.4%的页面不包含任何锚元素。有什么建议吗?
也许是因为您可以将操作附加到鼠标输入/事件,而无需锚标记?
嗨,Jonathan,
10.4%的页面缺少锚元素绝对值得研究。我将进一步挖掘,并希望能够提供一些有趣的事实。
认为还有一些网站的登陆维护页面没有链接
对我来说,最令人惊讶的发现是在您的前26个元素列表中:strong 在那里,但b 不在!这表明使用方式正在转向更语义化的方式,尽管毫无疑问,这也反映了使用CSS更改字符权重的转变。
table 问题很有趣。鉴于您的调查针对的是前20名网站,并且得到了HTML5文档类型的大量采用的强化,似乎您的样本严重偏向于现代积极维护和更新的网站,其规模要求它们关注新发展和最佳实践。如果是这样,那么也许您应该重新审视您对表格仍然大量使用的质疑。也许这些网站开发人员实际上已经找到了结构化行和列的平衡用法,在这种情况下,这确实是呈现某些信息的最佳方式。您的未来调查能否深入研究表格的使用方式——大体上是页面结构与表格数据?
最后,您说h3 元素是用于内容分区的优势标题。但在前26个元素列表中,h1 和h2 的使用频率明显高于h3。这些指的是不同的事物吗?
感谢您进行这项调查!
嗨,Brue,
我同意这部分可能听起来令人困惑,但让我尝试澄清一下。
在最常用的26个HTML元素中,
<h1>
和<h2>
领先于<h3>
,因为这是关于频率,而不是出现的总数。因此,一个页面更有可能包含<h1>
或<h2>
,而不是<h3>
。在8,021,323个页面上,我们总共统计了105,017,877个内容分区元素。这里只关注出现的总数,似乎
<h3>
处于主导地位。希望这有帮助!:)
看到下拉菜单(由多个< option >元素组成)占表单元素的50%,我大多感到悲伤(但并不惊讶)。正如f-u-c-k-dropdowns.com [去掉连字符](我没有任何关联,只是认为所有设计师都应该观看)中令人愉快的演示文稿中所指出的那样,几乎总是有更好的选择。
多么有趣的研究。似乎还有另一种类型的简单网站只使用9种HTML标签。简短而干净。
很高兴您也注意到了这一点。
我进行了检查,有362,769个网站只使用9种不同的HTML元素,而使用26个元素的网站则有473,631个。
只使用9种类型的标签并不一定“简短而干净”,也可能很长很乱。
我想象在正好为N 个标签(此处N==9)的情况下有两种可能的情况,并且有兴趣了解Catalin是否注意到其中任何一种情况。
a) divitis
——我看到许多网站深度嵌套
<div>
作为包装器的包装器,通常作为基于框架系统构建网站的一部分。您通常也可以根据div上的类来判断哪个框架。b) 自动化
——如果您使用E-Z Site Builder v3根据模板生成页面,许多类似的页面和网站将在N 点上膨胀数据。由于自动化通常无法推断语义,因此事物往往会变成通用div。
Stephen,
这很有趣。
现在我唯一想到的是检查所有大约30万个仅使用这9个不同元素的网站的“divitis”场景。
我们对大约30万个每个页面仅使用9个元素的网站运行了一些查询,以下是我们获得的前15名的数字
meta 2,056,149
script 687,084
link 369,959
div 346,548
head 253,189
html 252,865
title 252,751
body 251,831
p 131,922
h1 116,473
style 112,121
a 72,571
li 53,858
br 15,975
frame 14,414
以上是在大约30万个页面中找到的HTML元素总数。
如果不是三分之二,而是大约52.5%,如果我正确理解了数据。在800万个页面中,只有大约640万个页面具有文档类型。数据以不寻常的方式呈现,当元素相互结合使用时(例如area与map),相对百分比不是很有用。
嗨,Šime,
这是一个很好的观点,确实有三分之二的网站指定了文档类型。
此外,关于数据表示,这是我在这个项目开始时必须做出的决定之一。在寻找按功能对HTML元素进行分组的有趣方法时,我偶然发现了这个令人印象深刻的MDN资源。
绝对有趣。
我想建议缺少1%的body元素可能是由于框架集页面造成的。旧的和已弃用的,但仍在使用。
我更惊讶于11.5%的无脚本网站。也许它们都是前端、演示页面?
缺少的1%的body元素再次值得研究。
我想检查这一点的唯一方法是使用这些自定义设置再次运行解析器,并希望获得一些有趣的见解。
很棒的研究!我喜欢看到这样的细分。我很好奇为什么
<div>
包含在文本内容中而不是内容分段中。较旧的页面(HTML 4.01)很可能使用<div id="header">
而不是<header>
,所以我很想知道您是如何决定将统计数据细分为您选择的类别的。我期待下一项研究来寻找趋势!Brian,以上类别是根据MDN的HTML元素参考选择的。
您是否有可能开源数据?我想更深入地挖掘这些统计数据。
为什么会有这么多tbody元素?这个可选标签真的像table标签一样频繁使用,还是用户代理添加到DOM中的?
我刚刚用一个简单的表格进行了测试,Chrome、Safari和Firefox都会自动插入
tbody
元素。我认为还值得指出的是,这些数据肯定只反映了英语网络。
在我们能够解析的8,021,323个页面中,有5,368,133个在
html
元素上使用了lang属性。大约70%!查看下面
lang
属性值的细分– en-US 2,688,150
– en 2,104,991
– en-gb 267,844
– en-GB 120,406
– en-us 54,480
– de 40,250
– fr 26,156
– en-AU 24,133
– es-ES 21,561
– fr-FR 20,162
所以,是的,99%是英语
许多框架(例如fontawesome.io)在HTML中使用
<i>
标签进行图标标记。这可能会导致<strong>
(3.4%)比<b>
(2.3%)更受欢迎,但奇怪的是<i>
(2.8%)仍然比<em>
(0.8%)更受欢迎。有什么想法吗?在内联元素总数(936,760,353)中,有2.8%(26,229,289)是
i
元素。我深入研究了
i
元素的统计数据,以下是<i class="*"></i>
的前15名fa fa-angle-right – 696,960
fa fa-twitter – 561,335
fa fa-clock-o – 543,666
fa fa-facebook – 498,275
fa fa-angle-down – 455,119
ddc-icon ddc-icon-chevron-right – 448,404
fa fa-user – 439,849
fa fa-star – 409,194
fa fa-search – 397,014
fa fa-google-plus – 307,473
fa fa-shopping-cart – 307,700
ddc-icon ddc-icon-arrow2-right – 296,082
fa fa-bars – 254,183
fa fa-heart – 241,411
fa fa-envelope – 244,036
Font Awesome 真棒!
在内联元素总数(936,760,353)中,有2.8%(26,229,289)是
i
元素。所以,我深入研究了
i
元素的统计数据,以下是<i class="*"></i>
的前15名fa fa-angle-right – 696,960
fa fa-twitter – 561,335
fa fa-clock-o – 543,666
fa fa-facebook – 498,275
fa fa-angle-down – 455,119
ddc-icon ddc-icon-chevron-right – 448,404
fa fa-user – 439,849
fa fa-star – 409,194
fa fa-search – 397,014
fa fa-google-plus – 307,473
fa fa-shopping-cart – 307,700
ddc-icon ddc-icon-arrow2-right – 296,082
fa fa-bars – 254,183
fa fa-heart – 241,411
fa fa-envelope – 244,036
Font Awesome 真棒!
因此,
<i>
标签最常见的15种用法约占2620万个<i>
标签中的550万个。有多少个
<i>
标签没有class *并且*在开始和结束标签之间有内容?也就是说,有多少个可能用于图标字体元素以外的其他用途?Joan,很难说,但并非不可能 :)