提供结构化数据

本页介绍了如何添加搜索运算符所依赖的结构化数据。

网页通常充满自由格式的文本,这些文本便于用户阅读,但更难以让计算机理解。某些网页包含结构更好且易于阅读的信息,例如嵌入在网页网址或标题中的网页日期,或嵌入 HTML 代码中的机器可读字段。Google 会从网页中提取各种结构化数据。本页面介绍了 Google 提取的可在自定义摘要结构化搜索中使用的结构化数据类型。

  1. 概览
  2. 向可编程搜索引擎提供数据
  3. 向富媒体搜索结果提供数据
  4. 查看提取的结构化数据

概览

在阅读销售 DVD 的网页时,您可以快速了解电影片名、影评人对影片的看法以及他们对影片的分级。但是计算机不能做相同的事情,因为它不了解信息的结构。

例如,如果网页包含有关 DVD 的内容,以及对其他产品的推荐、其他商店的广告以及客户的评论,那么该网页可能会为各种内容(而不仅仅是正在销售的 DVD)设置不同的价格。您可以在关闭其他价格的同时轻松计算出 DVD 的价格,但计算机无法做到。一些复杂的程序可能会在网页上找到价格,但无法确定仅查找 DVD 价格的规则。

结构化数据格式是用于对网页的结构和内容进行标准化的规则。它们是可应用于文本片段的标记,以便计算机可以处理其含义或语义。标记不会更改网站的格式,只会使 XHTML 标记中包含的元数据和文本对计算机来说更加有意义。

可编程搜索引擎可以识别以下格式:

  • PageMaps:用于向页面添加元数据的不可见 XML 块。
  • JSON-LD:采用 JSON 格式的不可见结构化数据。
  • 微格式:用于沿着预定义类型标记可见网页内容的标记。
  • RDFa:用于按任意类型标记可见网页内容的替代标准。
  • 微数据:用于标记可见网页内容的新 HTML5 标准。
  • <meta> 标记:标准 HTML 标记,其中一部分由 Google 解析。
  • 网页日期:网页上的特征,指明其日期,Google 会尝试解析此日期

您可以使用一种或多种自己喜欢的格式,也可以组合使用几种格式。 请注意,与可编程搜索引擎不同,Google 搜索在生成富媒体搜索结果时仅使用 JSON-LD、Microdata 和 RDFa,并且有自己的算法和政策来确定向用户显示哪些信息。因此,虽然您添加到网页中的结构化数据元素可能会在可编程搜索引擎上显示,但该数据可能不会用于 Google 搜索结果。

下面列出了来自评价网站的理想化纯 HTML 代码段:

<div>
    <div>
        <h1>Pizza My Heart</h1>
    </div>
    <span>88%</span> like it
    <a href="#reviews">See all 12 reviews</a>
    <span>Under $10 per entree</span>
<div>

以下代码段显示了使用名为微格式的格式扩展的上一个 HTML 代码:

<div class="hreview-aggregate">
    <div class="vcard item">
        <h1 class="fn">Pizza My Heart</h1>
    </div>
    <span class="rating average">88%</span> like it
    <a href="#reviews">See all <span class="count">12</span> reviews</a>
    <span class="pricerange">Under $10 per entree</span>
<div>
您可以按照此方法查看可编程搜索引擎提取的功能

通过将标准结构化数据格式整合到您的网页中,您不仅可以将数据供可编程搜索引擎使用,也可以用于支持相同标准的任何服务或工具。将结构化数据应用于网页中最重要的信息,以便直接在结果中展示这些信息。例如,如果您的网站销售 Android 设备,请添加有关评分、价格、库存状况等内容的结构化数据。当用户搜索 Android 设备时,他们可以一目了然地查看评分、价格和空房情况。

因此计算机现在可以理解网页中的数据类型接下来该怎么做呢? 计算机还可以开始执行查找和合并不同网页中信息这项艰巨任务。这样可以让用户从完全无聊的任务中解脱出来,例如在多个页面中翻找所需内容。搜索引擎(例如可编程搜索引擎)可以处理网页中的结构化数据,并以更实用且更有意义的方式(例如自定义摘要结构化搜索)显示这些数据。

返回页首

向可编程搜索引擎提供数据

Google 支持多种主要由可编程搜索引擎使用的数据:页面映射、一部分 <meta> 标记以及大致的网页日期。

使用 PageMap

PageMap 是一种结构化数据格式,可为 Google 提供网页上数据的相关信息。它允许网站创建者在网页上嵌入数据和备注。虽然您的用户或 Google 网页搜索看不到结构化数据,但可编程搜索引擎会在将网页编入索引时识别这些数据,并直接在可编程搜索元素中返回这些数据。

您可以将 PageMaps 明确添加到网页中,也可以使用站点地图提交 PageMap。 Google 还会使用网页上的其他信息(例如富媒体搜索结果标记或 meta 标记数据)来创建 PageMap。

与下述其他结构化数据格式不同,PageMaps 并不要求您遵循标准属性或术语,甚至不需要引用现有的词汇、架构或模板。您可以直接创建适合您网站的自定义属性值。与微格式、微数据和 RDFa 的结构化数据属性不同(它们会添加到 HTML 正文中的用户可见内容周围),而 PageMaps 元数据包含在 HTML 页面的 head 部分中。此方法支持您的应用可能需要但您可能不想向用户显示的任意数据。

创建 PageMap 后,您可以使用以下任一方法将其提交给 Google:

PageMap 标记定义

下表概述了将 PageMap 数据添加到站点地图的要求。

标记 是否必需? 说明
PageMap 包含相关网址的所有 PageMap 信息。
DataObject 包含单个元素(例如操作)的所有相关信息。
Attribute 每个 DataObject 包含一个或多个属性。

注意:PageMap 是 XML 块,因此必须采用正确的格式;具体来讲,XML 中的 PageMapDataObjectAttribute 标记以及 typenamevalue 属性区分大小写。

直接向 HTML 网页添加 PageMap 数据

下面是一个关于羽毛球的网页的 PageMap 数据示例:

<html>
  <head>
   ...
  <!--
  <PageMap>
     <DataObject type="document">
        <Attribute name="title">The Biomechanics of a Badminton
        Smash</Attribute>
        <Attribute name="author">Avelino T. Lim</Attribute>
        <Attribute name="description">The smash is the most
        explosive and aggressive stroke in Badminton. Elite athletes can
        generate shuttlecock velocities of up to 370 km/h. To perform the
        stroke, one must understand the biomechanics involved, from the body
        positioning to the wrist flexion. </Attribute>
        <Attribute name="page_count">25</Attribute>
        <Attribute name="rating">4.5</Attribute>
        <Attribute name="last_update">05/05/2009</Attribute>
     </DataObject>
     <DataObject type="thumbnail">
        <Attribute name="src" value="http://www.example.com/papers/sic.png" />
        <Attribute name="width" value="627" />
        <Attribute name="height" value="167" />
     </DataObject>
  </PageMap>
  -->
  </head>
   ...
</html>

向站点地图添加 PageMap 数据

如果您不想在网页的 HTML 中包含 PageMap 数据,可以将 PageMap 数据添加到站点地图,然后通过 Search Console 站点地图工具提交该站点地图。

下例中的站点地图包含两个网址的 PageMap 信息:http://www.example.com/foo 和 http://www.example.com/bar。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
   <loc>http://www.example.com/foo</loc>
   <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0">
     <DataObject type="document" id="hibachi">
       <Attribute name="name">Dragon</Attribute>
       <Attribute name="review">3.5</Attribute>
     </DataObject>
   </PageMap>
 </url>
 <url>
   <loc>http://www.example.com/bar</loc>
   <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0">
     <DataObject type="document" id="biggreenegg">
       <Attribute name="name">Ribs</Attribute>
       <Attribute name="review">4.0</Attribute>
     </DataObject>
   </PageMap>
 </url>
</urlset>

解析 PageMap 数据

使用可编程搜索元素时,自定义属性会在每个结果的富媒体广告素材属性中返回,并可与搜索元素回调一起使用。

<r n="1">
 <u> http://www.xyz.com/business/vending_machine.html </u>
 ...
 <t> In Italy, a Vending Machine Even Makes the <b>Pizza</b> </t>
 ...
 <s>The European vending machine industry has annual sales of about #33
 billion, much of it coming from factories and offices.</s>
 ...
 <PageMap>
  <DataObject type="image">
   <Attribute name="image_src" value="http://www.nytimes.com/images/2009/03/14/business/14vend.751.jpg"/>
  </DataObject>
  <DataObject type="publication">
   <Attribute name="author" value="John Tagliabue"/>
   <Attribute name="date" value="March 14, 2009"/>
   <Attribute name="category" value="Business/World Business"/>
  </DataObject>
 </PageMap>
 ...
</r>

返回页首

使用 <meta> 标记

虽然使用 PageMap 可以精确指定每个网页所需的数据,但有时您不想为大量内容添加注释。Google 会从 <meta name="KEY" content="VALUE"> 形式的 META 标记中提取所选内容。我们不支持 META 标记的变体,例如使用 property 而非 name

虽然我们会明确排除通常通过网络创作工具(例如 robotsdescriptionkeywords)以编程方式插入的常见标记,但系统会提取您的网站特有的较为罕见的标记,并将其放入 metatags 类型的特殊数据对象中,该对象可与自定义搜索的所有结构化数据功能搭配使用。例如,以下形式的 <meta> 标记:

<meta name="pubdate" content="20100101">

会创建一个在 XML 结果中返回的 PageMap DataObject,如下所示:

<r n="1">
 ...
 <PageMap>
  <DataObject type="metatags">
   <Attribute name="pubdate" value="20100101"/>
  </DataObject>
 </PageMap>
 ...
</r>

只要能使用页面内容中明确包含的 PageMap 中的数据,就可以使用这种自动创建的 PageMap 中的数据。例如,它可以与按属性排序等结构化搜索运算符搭配使用:

https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=metatags-pubdate

或使用 可编程搜索元素

...
<div class="gcse-search" sort_by="metatags-pubdate:d:s"></div>
...

以下是 Google 排除的 <meta> 标记:

  • 机器人
  • 说明
  • 关键字
  • 之后重访
  • generator
  • 验证 v1
  • googlebot
  • google-site-verification
  • mssmarttagspreventparsing
  • 无缓存

Google 会尝试添加所有其他 <meta> 标记,需要注意的是,系统可能无法正确解析 <meta> 标记的 name 字段中的标点、特殊字符和嵌入的空格。可编程搜索引擎明确支持在 <meta> 标记名称中使用句点和短划线。可编程搜索引擎未明确支持 <meta> 标记名称中的其他特殊字符,但某些经过网址编码的特殊字符可以正确接受。

限制

只要所有已处理属性的总文本大小不超过 1MB,并且单个属性不超过 1024 个字符,可编程搜索引擎最多会将 50 个 <meta> 标记转换为 PageMap。

返回页首

使用网页日期

除了您在网页上明确指定的元数据之外,Google 还会根据网页的功能(如标题和网址中的日期)估算网页日期。可编程搜索引擎允许您使用此日期,通过使用特殊的元数据键 date,对结果进行排序、自定义调整和范围限制。所有使用 &sort= 网址参数的运算符都可以使用此预计日期,包括按属性排序按属性排序仅限范围

注意:网页日期不会添加到 PageMap 中,因此不会在 JSON API 结果中返回,无法在可编程搜索引擎元素中使用,也无法与按属性过滤功能搭配使用。

以下示例展示了如何通过以下运算符使用网页日期:

希望执行的操作 发送此网址... 如需了解详情,请参阅...
按日期降序对结果排序 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date 按属性排序
使结果偏向于较新的日期 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:d:s 按属性划分的偏见
结果偏向于更早的日期 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:a:w 按属性划分的偏见
返回 2010 年 1 月 1 日到 2 月 1 日(含)期间的结果 https://www.google.com/cse?cx=12345:example&q=oil+spill&sort=date:r:20100101:20100201 仅限特定范围

Google 对网页的正确日期的估算基于新闻报道的署名日期或文档标题中明确指定的日期等功能。如果网页的日期未指定或日期不一致,Google 对网页日期的估算可能没有意义,并且您的可编程搜索引擎返回的结果可能会按照您意料之外的方式排序。

设置日期格式

网站可能会隐式提供日期信息,依赖 Google 的网页日期估算功能来检测嵌入网页网址、标题或其他功能的日期,或者通过以结构化数据格式提供日期来明确提供日期信息。无论是哪种情况,有效使用日期都需要正确设置日期格式。

对于可编程搜索引擎的按属性排序按属性排序仅限范围功能,Google 会尝试同时使用传统日期格式和正式标准(例如 ISO 8601IETF RFC 850)来解析日期。接受以下完整日期格式:

日期格式 示例日期
YYYY-MM-DD 2009-12-31
YYYY/MM/DD 2009 年 12 月 31 日
YYYYMMDD 20091231
月 DD YYYY 2009 年 12 月 31 日
DD 月份(YYYY) 2009 年 12 月 31 日

Google 将尝试解析这些日期格式的变体,例如 MM/DD/YYYYDD/MM/YYYY。不过,日期越模糊,Google 正确解析日期的可能性就越小。例如,日期 06/07/08 非常不明确,Google 不太可能为其指定您想要的解释。为获得最佳结果,请使用完整的 ISO 8601 日期格式,并注明完整的年份。

返回页首

丰富网页摘要

Google 还会从 JSON-LD、微格式、RDFa 和 Microdata 中提取各种结构化数据,以用于 富媒体搜索结果以及标准 Google 搜索结果的扩展呈现。类似数据可用于可编程搜索引擎的结构化数据运算符,通常与富媒体搜索结果中使用的数据相同。例如,如果您使用微格式 hrecipe 标准标记了网页,则可以使用 &sort=recipe-ratingstars 等运算符对食谱的评分星数进行排序。Google 会不断扩展它提取的数据,以及其中有多少数据可用于可编程搜索引擎;若要查看 Google 目前提取哪些数据,可以使用 Search Console 中的结构化数据测试工具

返回页首

使用 JSON-LD

JSON-LD 是一种广泛使用的结构化数据标准格式。数据格式为 JSON,并将其放在包含 type="application/ld+json"<script> 标记中。

以下是包含一些简单的 JSON-LD 的少量 HTML 代码:

<script type="application/ld+json">
      {
        "@id": "http://event.example.com/events/presenting-foo",
        "@type": "http://schema.org/Event",
        "http://schema.org/description": "Please attend. You'll love it!",
        "http://schema.org/name": "Presenting Foo",
        "http://schema.org/startdate": "2022-05-24",
        "http://schema.org/location": "Back room"
      }
    </script>

Google 会从可编程搜索引擎提取一部分这些数据,并对其进行标准化。标准化可以简化 JSON-LD,从而移除许多 JSON-LD 习语。标准化数据会进一步处理:

  • 它会从 JSON-LD 的结构转换为树木森林。
  • 林被精简为与部分 schema.org 类型相关的分支。这个子集由 schema.org 如果您有其他适合特定用例的类型,请在支持论坛中告诉我们。
  • 具有所选类型之一的每个 JSON-LD 节点都会从其 JSON-LD 树中提取一个分支。该分支包含其在树中的祖先节点及其所有后代节点。例如,我们可能有一个以 MusicComposition 为根的树,其 firstPerformance 属性具有一个 Event 值,而该值具有一整套 Event 属性。从 MusicCompositionEvent 的属性的所有节点及其任何后代均会保留所有这些节点,以保留一个包含 firstPerformance Event 的有意义的树分支。
对于上面的 JSON-LD,结构化数据将以 JSON 的形式在搜索结果中返回,如下所示:
 ...
 "event": {
   "name": "Presenting Foo",
   "description": "Please attend. You'll love it!",
   "startdate": "2022-05-24",
   "location": "Back room"
 },
 ...

如需查看 Google 搜索从网页中提取的内容并验证 JSON-LD,请使用 Google Search Console 网站上的富媒体搜索结果测试工具

如需详细了解 JSON-LD,请参阅结构化数据文档json-ld.org

返回页首

使用微格式

微格式是一种表示常用发布内容(例如评价、人物、商品和商家)的规范。通常,微格式由 <span><div> 元素和一个类属性组成,以及简短的描述性属性名称(例如,dtreviewedrating,分别表示评价项的日期及其评分)。

下面包含一段纯 HTML 代码。

<p><strong>Kevin Grendelzilla</strong></p>
<p>Technical writer at Google</p>
<p>555 Search Parkway</p>
<p>Googlelandia, CA 94043</p>

以下代码段展示了之前使用微格式扩展的 HTML 代码:

<div class="vcard">
   <p><strong class="fn">Kevin Grendelzilla</strong></p>
   <p><span class="title">Technical writer</span> at <span class="org">Google</span></p>
   <p><span class="adr">
      <span class="street-address">555 Search Parkway</span>
      <span class="locality">Googlelandia</span>, <span class="region">CA</span>
      <span class="postcode">94043</span>
      </span></p>
</div>

Google 会提取此数据的子集,对其进行标准化和重新整理,以对应数据在富媒体搜索结果中的显示方式。该子集会在 XML 结果中返回,如下所示:

<r n="1">
 ...
 <PageMap>
  <DataObject type="person">
   <Attribute name="location" value="Googlelandia"/>
   <Attribute name="role" value="Technical Writer"/>
  </DataObject>
 </PageMap>
 ...
</r>

若要查看 Google 从某个网页提取的内容,请使用 Google Search Console 网站中的结构化数据测试工具。Google 从网页中提取的数据在不断扩展,因此请定期回来查看您需要的数据是否已提供。在此期间,如果您需要与已定义的微格式不对应的自定义数据,则可以使用 PageMaps

如需详细了解微格式,请参阅结构化数据文档microformats.org

返回页首

在属性中使用资源描述框架 (RDFa)

属性中的资源描述框架 (RDFa) 比微格式更加灵活。微格式既指定了用于将结构化数据添加到 HTML 文档的语法,也指定了一组微格式类,每个类都有自己的特定允许属性词汇。另一方面,RDFa 仅指定语法,允许您使用现有的属性词汇或创建自己的词汇表。它甚至可以让您自由组合多个词汇。如果现有词汇表不能满足您的需求,您可以通过创建新字段来定义自己的标准和词汇表。

下面包含一段纯 HTML 代码。

<div>
   <h3>5 Centimeters Per Second</h3>
   <h4>Makoto Shinkai</h4>
    ...
</div>

以下代码段展示了之前使用 RDFa 扩展的 HTML 代码:

<div>
   <h3 property="dc:title">5 Centimeters Per Second</h3>
   <h4 property="dc:maker">Makoto Shinkai</h4>
   ...
</div>

如需详细了解 RDFa,请参阅 结构化数据文档。如需详细了解如何定义 RDF 架构,请参阅 RDF Primer

返回页首

使用微数据

HTML5 是网页所用语言的最新版本,它定义了一种称为微数据的格式,它将 RDFa 和微格式的概念直接整合到 HTML 标准本身中。微数据使用 HTML 标记(通常是 spandiv)中的简单属性为项和属性分配简要的描述性名称。

与 RDFa 和微格式一样,微数据的属性可帮助您指定内容描述的是特定类型的信息,例如评价、人物、信息或事件。例如,可以具有名称、昵称、网址、职位和关联商户等属性。以下示例是一个简短的 HTML 代码段,显示了 Bob Smith 的基本联系信息:

<div>
  My name is Bob Smith but people call me Smithy. Here is my home page:
  <a href="http://www.example.com">www.example.com</a>
  I live in Albuquerque, NM and work as an engineer at ACME Corp.
</div>

以下是用微数据标记的同一段 HTML 内容。请注意,在此示例中,我们使用的“nickname”属性尚未成为 schema.org 的正式组成部分。使用自定义搜索,您可以先在本地探索可能的 schema.org 扩展项,然后再将其提供给更广泛的社区。

<div itemscope itemtype="http://schema.org/Person">
  My name is <span itemprop="name">Bob Smith</span>
  but people call me <span itemprop="nickname">Smithy</span>.
  Here is my home page:
  <a href="http://www.example.com" itemprop="url">www.example.com</a>
  I live in Albuquerque, NM and work as an <span itemprop="title">engineer</span>
  at <span itemprop="affiliation">ACME Corp</span>.
</div>

此示例的第一行包含一个 HTML div 标记,该标记具有 itemscope 属性,该属性指示 div 包含微数据项。同一标记的 itemtype="http://schema.org/Person" 属性告诉我们这是一个人。人物项的每个属性均使用 itemprop 属性进行标识;例如,span 标记中的 itemprop="name" 表示人物的姓名。请注意,您不限于 spandivitemprop="url" 标记附加到 a(锚点)标记。

如需详细了解微数据,请参阅 结构化数据文档HTML 微数据标准。

返回页首

查看提取的结构化数据

JSON-LD 结构化数据具有 Google 支持的特殊验证工具,即富媒体搜索结果测试工具。它会检查 JSON-LD 的语法及其部分语义,尤其是结构化数据是否包含必需的属性和建议的属性。 如需查看其他形式的结构化数据,请使用架构标记验证器。它会验证结构化数据的语法,并显示其解释形式。

可编程搜索引擎会保留一部分结构化数据,因此,如需使用可编程搜索引擎,可以通过以下方式检查可编程搜索引擎查看的网页结构化数据:

  1. 高级搜索功能中启用搜索结果中的结构化数据

    启用结构化数据的屏幕截图

  2. 然后,使用该搜索引擎查找包含您想查看的数据的网页,并点击与该网页对应的搜索结果中的结构化数据按钮:

    搜索结果中结构化数据按钮的屏幕截图

如果您尚未使用结构化数据标记任何网页,但想查看提取的结构化数据是什么样子,您可以输入其他网站的网址。具有评价信息或联系人列表的热门网站特别很可能包含结构化数据。

找到包含结构化数据的网页后,您可以查看该网页的源代码,了解该网站已实现的结构化数据。例如,请考虑以下 HTML 代码段,其中包含以微格式实现的人物结构化数据:

<div class="vcard">
    <h1 class="fn">
      <span class="given-name">Godzilla</span>
      <span class="family-name">Gigantis</span>
    </h1>
    <span class="title">Senior Giant Monster</span>,
    <span class="adr">
      <span class="locality">Tokyo</span>
    </span>
<div>

可编程搜索引擎会提取其中的一部分数据,以用于结构化搜索:

person (source = MICROFORMAT)
  location = Tokyo

返回页首

探索其他功能

结构化数据可用于多项可编程搜索引擎功能,包括: