HTML语义化分析+豆包AI——以aliexpress首页为例 | 豆包MarsCode AI 刷题

117 阅读2分钟

HTML语义化(Semantic HTML)是指在编写HTML代码时,不仅仅使用<div> <span>这类通用标签,而是通过<header> <footer> <main> <h1> <h2>等等有明确含义的标签来描述网页内容。

这样做的好处包括:

  • 易于组织网页设计思路(一级二级三级标题让网页层次鲜明;header、footer、main让网页结构科学)
  • 满足无障碍需求(footer、main、header可以帮助屏幕阅读器用户更好地导航页面)

本次让我们来分析aliexpress首页,之所以分析它,因为这是ali旗下的跨境电商网站,相比于国内站,他在无障碍需求上做得会更好,相信他在HTML语义化上也会更好

一进入首页,打开F12看HTML代码

图片.png

比较尴尬的是,映入眼帘的首先是一排<div>标签,尽管他们的id或者class是语义化的,但其标签本身并不是

我们进一步往下翻

图片.png

打开id为header的元素,结果其中装载的也都是div

我怀疑是不是工程师在写代码时,原本是带语义的,但是编译后语义标签消失,或者是打包工具让语义消失

在此我们询问豆包

图片.png

豆包认为编译或者打包工具通常并不会导致语义化消失,让我们检查一下aliexpress首页前端使用的是什么技术栈,通过wappalyzer看到它使用的应该是React库

图片.png

除此之外,并没有看到它使用的UI库,再次询问豆包

图片.png

豆包暗示它可能是过度使用了<div>

既然如此,让我们来尝试使用屏幕阅读器,看缺失语义标签的情况下使用aliexpress是怎样的体验

首先,Reading Mode阅读模式不适用于该网页,那我们直接用Axe来测试一下该网页的accessibility

图片.png

结果显示有210处地方"not contained by landmarks"

图片.png

结果表明,aliexpress的语义化做的还并不到位

原因分析:

  • 有可能是工程师规范,让组件库每个组件都以<div>为基础,并不使用其他语义标签
  • 有可能是为了反爬,使用语义标签或许会减少爬虫难度,毕竟aliexpress作为一个电商网站,时时刻刻都有几千万只爬虫虎视眈眈

但不管如何,aliexpress的语义化做的就是不够到位,一眼放去皆是<div>

本以为作为国际站会更加迎合无障碍标准,但实际上或许是因为语义化在无障碍中属于是moderate的问题,导致网站并不重视

接下来我们将分析一些其他大厂的网站,看看他们的HTML语义化做的如何。