SEO优化:HTML5扩展之微数据与丰富网页摘要


一、微数据是?

一个页面的内容,例如人物、事件或评论不仅要给用户看,还要让机器可识别。而目前机器智能程度有限,要让其知会特定内容含义,我们需要使用规定的标签、属性名以及特定用法等。举个简单例子,我们使用<h1>标签包裹页面标题信息就是为了让机器识别(搜索引擎 – SEO)。

而微数据是什么呢?在我看来,微数据也是为了方便机器识别而产生的东西。其有特定的规范,有特定的格式。可以丰富搜索引擎的网页摘要。

先来看看比较官方的解释:HTML5 微数据规范 是一种标记内容以描述特定类型的信息,例如评论、人物信息或事件。每种信息都描述特定类型的项,例如人物、事件或评论。例如,事件可以包含 venue、starting time、name 和 category 属性。

微数据使用 HTML 标记(常为 <span> 或 <div>)中的简单属性为项和属性指定简要的描述性名称。

上面的释义过于学术化,我们可以将其搁置一边,先看个简单的关于微数据的例子。平时,我们要在页面上显示对一个人的描述,HTML代码可能如下:

HTML 全选
<div>
  我的名字是王富强,但大家叫我小强。我的个人首页是:
  <a href="http://www.example.com">www.example.com</a>
  我住在上海市富贵新村。我是工程师,目前在财富科技公司上班。
</div>

而如果使用针对人物的微数据标记,则HTML会如下:

HTML 全选
<div itemscope itemtype="http://data-vocabulary.org/Person">
  我的名字是<span itemprop="name">王富强</span>,
  但大家叫我<span itemprop="nickname">小强</span>。
  我的个人首页是:
  <a href="http://www.example.com" itemprop="url">www.example.com</a>
  我住在上海市富贵新村。我是<span itemprop="title">工程师</span>,
  目前在<span itemprop="affiliation">财富科技公司</span>上班。
</div>

您会发现,HTML代码量多了不少,还出现了很多自定义的属性,如 itemscope, itemtype , itemprop 等。这些属性就是方面机器识别的特定的标记。其含义等依次如下:
itemscope
定义一组名值对,称为项。

itemprop=”属性名”
添加一个数据项属性。这个属性名可以是个单词或是个URL,与元素包含的文本值相关:

  • 对于大部分元素,属性名值就是元素标签里面的文本值(不是所有标签)。
  • 对于有URL属性的元素,该值就是URL(如 <img src="">, <a href="">, <object data="">等)。
  • 对于<time>元素,该值就是datetime=""属性。
  • 对于<meta itemprop="" content="">, 该值就是content=""属性。

itemref=””
允许微数据项通过指向特定ID(含有需要属性的元素)包含非后代属性。

itemtype=””
微数据定义的类型。其值为URL,扮演词汇表名称的作用。

itemid=””
允许词汇表给微数据项定义一个全局标识符,例如书的ISBN数值,在同样元素上使用itemid作为数据项的itemscopeitemtype属性。

二、微数据语法

itemscope和itemprop
先来个小例子:

HTML 全选
<p itemscope>下周我要去<span itemprop="name">韩红刚</span>家拔萝卜</p>

<p>元素上的itemscope使其成为了一个微数据项,其子元素上itemprop属性的值name为词汇表中的一个关键属性。一个微数据项至少有一个验证的itemprop.

itemprop后面的名称可以是单词,也可以是URL,使用URL让这个名称全局唯一。如果使用单词的话,最好使用词汇表,这个单词在该词汇表中有定义,同样可以让名称唯一。

itemprop值
对于一些元素,itemprop值来自元素的属性,像是datetime属性或是content属性。还是拔萝卜的例子:

HTML 全选
<p itemscope><time itemprop="date" datetime="2011-12-05">下周</time>我要去 <a itemprop="url" href="http://weibo.com/u/2499612703">韩红刚</a>家拔萝卜</p>

定义了两个itemprop下的属性值urldate,所包含的值就是一个url地址(不是元素内的文本值韩红刚)和一个特定格式的时间。

在微数据中,下面的元素以它们的URLs为值:

  • <a href="">
  • <area href="">
  • <audio src="">
  • <embed src="">
  • <iframe src="">
  • <img src="">
  • <link href="">
  • <object data="">
  • <source src="">
  • <video src="">

相反,以下HTML5元素URL包含属性不作为属性值使用:

  • <base href="">
  • <script src="">
  • <input src="">

上面两个例子,我们可以来个简单的整合,如下:

HTML 全选
<p itemscope>
	<time itemprop="date" datetime="2011-12-05">
		下周
	</time>
	我要去
	<a itemprop="url" href="http://weibo.com/u/2499612703">
		<span itemprop="name">
			韩红刚
		</span>
	</a>
	家拔萝卜
</p>

itemprop="name"嵌入在链接之中了。

嵌套项
我们可以给包含itemprop的元素添加itemscope插入嵌套项。

HTML 全选
<p itemscope>
	<span itemprop="name">
		五月天
	</span>
	主唱是
	<span itemprop="members" itemscope>
		<span itemprop="name">
			阿信
		</span>
		。
	</span>
</p>

定义了一个项,有两个关键字属性:namemembers。该name是五月天,members则是嵌套项,包含了一个值为阿信的属性name。注意到members并无文本值。

像上面p标签这种父辈元素没有任何一个微数据项的微数据项称为“顶级微数据项”。微数据API返回的是顶级数据项及其对应的属性,以及其中嵌套的子数据项。

多属性
先看例子:

HTML 全选
<span itemprop="members" itemscope>前S˙H˙E 的成员是
  <span itemprop="name">任家萱</span>,
  <span itemprop="name">田馥甄</span>和
  <span itemprop="name">陈嘉桦</span>.
</span>

项目可以包含不同值的多个属性。例如上例name属性定义了3个值:任家萱、田馥甄和陈嘉桦。

同一个元素同样也可以有多个属性关键名称(用空格分隔),例如下面这个例子:

HTML 全选
<p itemscope>
    <span itemprop="name call">志玲姐</span>是个美女。
</p>

“志玲姐”即是名字,又是称谓。

通过itemref页面内引用
还是先看个例子吧:

HTML 全选
<p itemscope itemref="band-members">后天我要去看<span itemprop="name">
S˙H˙E</span>的演唱会,好兴奋哈!</p>
……
<span id="band-members" itemprop="members" itemscope>S˙H˙E 的成员是
<span itemprop="name">任家萱</span>,
<span itemprop="name">田馥甄</span>和
<span itemprop="name">陈嘉桦</span>.</span>

上面的定义通过引用ID band-members包含了members项的三个成员名称属性,每个都是不一样的值。

使用meta添加内容
如果你想添加的文本并不是页面内容的一部分,你可以在<meta>元素上使用content属性:<meta itemprop="" content="">

举个小例子:

HTML 全选
<p itemscope><span itemprop="name" itemscope>
 钟欣桐<meta itemprop="likes" content="twins成员">
</span>摄影爱好者陈老师的粉丝。</p>

不会,有些遗憾的是,某些浏览器会自动把<meta>元素移动到head标签中。比较靠谱的做法是使用itemref做页面内引用,这样即使浏览器移除了,一些工具啥的还是能够识别出微数据。具体做法如下:

HTML 全选
<p itemscope><span itemprop="name" itemscope itemref="meta-likes">
 钟欣桐<meta id="meta-likes" itemprop="likes" content="twins成员">
</span>摄影爱好者陈老师的粉丝。</p>

项类型(itemtype)及全局唯一名字
通过itemtype,我们可以给微数据项指定一种类型,这个属性需要使用在含itemscope的元素上。itemtype的值是个URL地址,代表了微数据使用的词汇。请注意,这个地址只能是文本字符串,用来唯一标示词汇表,同时,该地址不一定非要指向真是的网页地址(当然,指向最好了)。这样我们就可以使用词汇表中的name名称作为itemprop名称做些定义了。

例如,下面这个例子。

HTML 全选
<p itemscope itemtype="http://schema.org/MusicGroup">后天我要去看<span itemprop="name">
S˙H˙E</span>的演唱会,好兴奋哈!</p>

http://schema.org/MusicGroup 词汇表中有个名为"name"的关键名称,如下截图:

用itemid全局标识

有时,某些项需要唯一的标识进行标识。例如书的ISBN数值,我们可以借助itemid属性,如下例子:

HTML 全选
<p itemscope itemtype="http://vocab.example.com/book"
  itemid="urn:isbn:0321687299">
  <!-- 书信息… -->
</p>

三、微数据的力量

说了这么多,你可能会有疑问或不耐烦了:微数据这玩意,貌似蛮复杂,头疼的,看上去鸟用都没有,唉,还是按ctrl+w去微博转转吧~~

为了打消这种疑虑,有必要中间插播介绍了微数据的真正体。我们可能都知道,给元素添加额外的语义东西,可以使用自定义data属性(data-*). 但是,自定义data属性只是纯粹的属性,而微数据有特定的规范,有特定属性名称的词汇表,且更多是服务于现实世界,在这方面是很强大的。

说得太空太虚了吧?确实,过于学术化的说法往往不易让人理解。通俗讲,微数据就是在保证页面内容显示良好的情况下清晰而准确地勾勒出了数据的骨架与精髓,可以通过工具、API等进行方便强大的数据交互。

我们都知道,现在流行的数据交换格式是什么?没错,就是JSON。从某种意义上来讲,微数据的本质就是JSON,哦?没看出来,不急,举个例子就会知道了。

如下HTML下的微数据代码:

HTML 全选
<section>
  <h3><a href="http://atnd.org/events/5181" title="WDE-ex Vol11『iPad
  のウェブデザイン:私たちがみつけたこと 』 : ATND">WDE-ex Vol.11 — Designing
  for iPad: Our experience so far</a></h3>
  <p>On <time datetime="2010-07-21T19:00:00+09:00">July 21st 19:00
  </time>-<time datetime="2010-07-21T20:00:00+09:00">20:00</time> at
  <span itemscope itemtype="http://schema.org/Organization">
  <a itemprop="url" href="http://www.apple.com/jp/retail/ginza/map/">
  <span itemprop="name">Apple Ginza</span></a></span>,
  <span itemscope itemtype="http://schema.org/Person">
  <a itemprop="url" href="http://informationarchitects.jp/" title="iA">
  <span itemprop="name">Oliver Reichenstein</span>, CEO of iA</a>
  </span>, will share the lessons they've learned while creating three
  iPad apps and one iPad website.</p>
</section>

日本,英文不懂没关系,机器也不懂,但是它懂微数据,你也一样。上面微数据的数据本质是什么?很乱,不是吗?但是,如果我们只关注微数据的部分:itemscope,itemprop等,你会发现什么?

我们使用Live Microdata对上面的HTML代码跑一下,会得到下面的JSON数据:

HTML 全选
{
  "items": [
    {
      "type": [
        "http://schema.org/Organization"
      ],
      "properties": {
        "url": [
          "http://www.apple.com/jp/retail/ginza/map/"
        ],
        "name": [
          "Apple Ginza"
        ]
      }
    },
    {
      "type": [
        "http://schema.org/Person"
      ],
      "properties": {
        "url": [
          "http://informationarchitects.jp/"
        ],
        "name": [
          "Oliver Reichenstein"
        ]
      }
    }
  ]
}

我想,您应该大致明白机器为何可以识别微数据了。由于微数据的这种数据本质特性,在web应用中,我们做一些数据交互的时候,事情就会变得奇妙而轻松。例如,你访问一个你中意的女孩子的个人主页的时候,如果使用微数据,就可以自动把她的一些信息啊联系方式啊什么的放到你的通讯录中,是不是很赞!或是在你的日历表中添加一些需要完成的事件等等。很多真实世界的应用与web应用有了更为轻松强大的结合。

四、一些词汇表介绍

这里提及的微数据词汇表有三:schema.org词汇表Google丰富摘要词汇表(www.data-vocabulary.org),WHATWG/microformats.org词汇表

我大致看了这几个词汇表,不由得心里一咯噔:妈呀,这么多,都介绍的话我这周末只能抱电脑了。因此,这里只大致提点部分提纲性质内容。

事件(Events)
人物(Person)
组织或业务(Organisation or business)
日历(Calendar)
预览(Review)
许可证(License)
产品和服务(Products and services)
Atom提要(Atom feed)
  • hAtom — http://microformats.org/wiki/hatom
食谱(Recipes)

Google丰富摘要词汇支持微格式和RDFa这是除了微数据之外其他两个增加内容语义的方法。除了这种差异外,基本上与schema.org是想匹配的,除非他们在itemtype中使用www.data-vocabulary.org代替schema.org。尽管google仍然支持这类词汇,但是最新的schema.org提供了更多的词汇,这些词汇还被Bing和Yahoo支持,因此在选择微数据上schema.org可以让你笑得更久。不过您可能仍然希望签出“富文档摘要”,因为它们代码更简单,书写的时候要比schema.org来得更好。

五、浏览器支持

虽然浏览器目前对微数据的支持基本上就是大鸭蛋,但是,由于搜索引擎还有一些三方工具都鸟他,微数据目前还是很有应用价值的。例如Bing, Google, 以及Yahoo使用schema.org词汇表定义的微数据显示搜索结果(特定格式的搜索结果,即将展示)。

六、丰富网页摘要应用

先看国内应用微数据的实例。

我们打开谷哥哥,输入“香口鱼”,轻轻地回车,稍等片刻,得到下面截图:

我们对比可以发现,大众点评网搜索显示的样子跟下面的芸芸结果不一样,有评分显示,评论数,日期等。怎么回事?莫非点评给Google塞了很多票子。非也,我们点击链接进入该页面,右键查看源代码,就会发现如下代码:

上面截图各种标注的部分就是本文多次出现了微数据特有的关键属性,名称等。也就是说,点评的搜索结果的显示之所以不同,是因为其应用了HTML5之微数据,使用的词汇表是相对简单的Google丰富网页摘要词汇表中的。

关于具体怎么使用,Google提供了详尽的使用示例(包括代码展示),而且是中文版的。就是上面这段末尾的链接。我想我没有必要重复详述。不过,有些同行可能就是单纯地感兴趣,不想跳来跳去,我还是依葫芦画瓢,做了个很简单的微格式应用例子。

您可以狠狠地点击这里:微数据示例之评论demo

其实demo没有什么好看的,人眼所见,并非机器所见,Google提供了一个丰富摘要测试的工具(仍测试阶段):Rich Snippets Testing Tool

例如上面测试结果您可以狠狠地点击下面这个链接查看:微数据评论之丰富网页摘要测试

是否有所启发呢?想让您的网页在Google,或是Bing下面的展示丰富而与众不同吗?微数据,就是你的选择!!

 

七、延伸阅读

本文主要参考:Extending HTML5 — Microdata

 

转载自:https://www.zhangxinxu.com/wordpress/2011/12/html5%e6%89%a9%e5%b1%95-%e5%be%ae%e6%95%b0%e6%8d%ae-%e4%b8%b0%e5%af%8c%e7%bd%91%e9%a1%b5%e6%91%98%e8%a6%81/

 

 

 

 

 

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:免费可商用的字体有哪些?
下一篇:.NET IIS第一次访问慢,程序池被回收问题,IIS初始化(启用预加载)
评论列表

发表评论

评论内容
昵称:
验证码:
验证码
关联文章

SEO优化:HTML5扩展数据丰富网页摘要
C#性能优化总结
网站SEO优化-网站地图生成,SiteMap
信浏览器网页调试的几中方法
EFCore官方扩展
SAP S/4HANA MM模块培训 18 - 优化采购:采购申请供应源分配转单入口
.net 服务RFC
SAP UI5 OData2
当动态桌面遇上 HTML5
SEO刷排名工具参数配置指南
Python爬虫解析网页的提取html信息的常用方式
数据扩展:BPM中判断数据扩展而来的还是通过新增来的
Asp.net 信H5唤起支付和支付回调
公共字典扩展
ASP.Net 信H5 OAuth2 认证 (前后端不分离)
信支付:签名计算.net4.5
利用SelectPdf插件将网页生成PDF
SAP S/4HANA MM模块培训 04 - 物料主数据、物料类型MM01创建
VS扩展插件推荐:EFCore.Visualizer (免费)
.NET 高效依赖注入:使用 Lazy<T> 和工厂模式优化性能内存占用

热门标签
.NET Core .NET Reactor ag-grid AI发布 api安全 ASP.NET Core C#DLL加密 C#播放声音 C#代码混淆 C#代码加密 ChromeDriver Codex DateTime DBeaver devexpress devTool DLL混淆 edge.js EF EFCore Electron element-ui el-form el-table excel FastReport FileStream FolderBrowerDialog FolderSelectDialog form提交 git gridcontrol gridview input javascript json字符串 JS转换对象JSON jwt JWT授权 linq log Math MCP mitmproxy MVC MySQL Navicat netstat nginx node_modules NSwag Nuget Nuget镜像 number PowerShell pyinstaller python pythoncom python爬虫 python抓包 pywin32 redis Requests-html RestSharp Selenium sql SQL Server Swagger to-cms Visual Studio VSCode vue VueRouter vue路由 VUE页面通讯 Webpack Windows Windows服务 winform wmi xlrd yaml YESCMS YESWEB开发框架 白象 表单提交 播放声音 打开URL 代码混淆 弹窗提醒 端口占用 对象转换 分布式 公共字典 机器码 进程排查 静态资源 开发指南 路由参数 密钥 配置教程 配置文件 权限 人工智能 任务 任务调度 日期间隔 日志 日志记录 省市区 授权验证 数据库 四舍五入 文案 文件读取 文件夹选择 文件目录选择 问题排查 行政区域数据 页面通讯 中间件 CSharp 事务锁 工单系统 并发控制 重复提交 CMS Markdig Markdown markdown-it marked 技术选型 VS Code 开发工具 源代码管理 版本控制 Docker PostgreSQL 时区 部署排查 CMS架构 EF Core 主题系统 二次开发 插件系统 容器 运维命令 镜像清理 Linux NAS 远程挂载 飞牛 fnOS S/4HANA SAP GUI SAP HANA SAP R/3 SAP入门 SAP版本 ERP SAP SAP MM 库存管理 物料管理 采购管理 入门教程 SAP S/4HANA SPRO 企业结构 采购组织 MM01 物料主数据 物料类型 BP分组 业务伙伴 供应商主数据 ME41 RFQ 库存物料 采购流程 ME51 消耗性物料 科目分配 采购申请 AC03 ML81N 外部服务 服务主数据 Business Partner SAP培训 ME51N MM模块 Lean Services MM-SRV 外部服务采购 PIR 供应来源 采购主数据 采购信息记录 ME31K 框架协议 计划协议 采购合同 ME01 供应来源确定 货源清单 MEQ1 供应源确定 配额安排 配额评分 MD04 MD21 MRP 计划文件 需求计划 批量程序 MD01N MD02 MRP Live MD05 MM 物料计划 优化采购 供应源 采购订单
联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码