酒店价格:启用抓取工具导航和价格标记

本指南概述了如何使用 微数据导航属性 为您的网站添加标记,以便 Google 的价格准确性 抓取工具可以自动浏览您的预订漏斗并验证您的房间 价格。

如需了解所有可用结构化数据 属性(包括分项税费和客房详情)的完整技术规范,请参阅 酒店价格结构化数据参考


使用自定义 data-nav-* HTML 属性为互动元素添加注释并声明漏斗阶段,以便抓取工具可以遍历您的预订流程。

1.1 页面顶部阶段声明 (data-nav-stage)

预订漏斗中显示价格的每个页面都应声明其 阶段,并附加到 <body> 标记或主要封装容器标记(例如 <div><section><main>)。这样,抓取工具便可知道 预订流程的哪个阶段处于活跃状态,并有助于日后排查问题。

  • data-nav-stage (推荐) :声明活跃的漏斗阶段。 虽然不是严格要求,但指定名称(例如 "landing", "room-selection", "checkout", "ready-for-payment") 有助于在 验证期间识别活跃阶段。

1.2 最终阶段指示器 (data-nav-stage-final)

在用户输入个人信息或付款 信息之前显示价格的最终页面上,将最终阶段标志添加到页面顶部容器 以及阶段声明(例如 data-nav-stage="ready-for-payment")。

  • data-nav-stage-final (可选): 在付款前的最终价格页面上设置为 "true"data-nav-stage-final="true")。 这向抓取工具表明,此页面是最终页面,可以提取价格以进行验证。此页面必须包含带有微数据标记的价格结构。

1.3 关键路径互动属性

在中间页面上,为互动元素(按钮或链接)添加标记,以便用户沿着预订关键路径前进。如果同一页面上需要执行多项操作,请指定执行顺序。抓取工具会按照指定的顺序执行操作,然后再尝试提取最终页面上的价格。

属性 必填值 用途
data-nav-criticalpath "true" 标记抓取工具必须点击才能前进的强制性按钮/链接。
data-nav-interactiontype "CLICK" 声明需要点击操作才能推进流程。
data-nav-interactionorder "1""2"、… 声明同一页面上需要执行多项操作时的执行顺序。

最小导航示例

<button data-nav-criticalpath="true"
        data-nav-interactiontype="CLICK"
        data-nav-interactionorder="1">
  Continue
</button>

2. 价格声明(微数据)

在预订漏斗的最终可访问页面(在输入个人信息或付款信息之前)上,使用微数据标记为价格优惠(一项价格优惠)添加标记。页面上只能标记一项优惠,指明抓取工具提取的价格,该价格与用户在 Google 上选择的价格相对应,然后用户会到达您的网站。如需详细了解如何定义着陆页参数, 请参阅变量和条件

虽然 Google 完全支持 酒店价格结构化数据参考 中的完整层次结构(包括分项基本价格、各项税费和客房详情), 但 Google 也接受简化的结构化数据树,以便您更轻松地 在网页上标记酒店价格。

对于可用的价格,必须提供入住总价。如果行程或客房不可用或已售罄,请在 makesOffer 下声明 https://schema.org/SoldOut,而无需 priceSpecification

<div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
  <meta itemprop="availability" content="https://schema.org/SoldOut"/>
  Sold Out
</div>

如需了解详情,请参阅 availability属性 规范。

2.1 简化的结构化数据树

为了简化预订页面上的标记,您只需声明根酒店和预订容器、入住日期 (YYYY-MM-DD)、入住人数以及包含入住总价的单项优惠:

Hotel / LodgingReservation (Root Container)
├── identifier                   [Meta/Attribute] Hotel ID
├── name                         [Visible text] Hotel Name
├── checkinTime / checkoutTime   [Visible text with YYYY-MM-DD in content="..."] Stay Dates
├── numAdults / numChildren      [Visible text] Occupancy
└── makesOffer (Offer)
    └── priceSpecification (CompoundPriceSpecification)
        ├── priceCurrency        [ISO Code, such as "USD"] Currency
        └── price                [Visible text] Total Stay Price (Taxes & Fees Included)

2.2 关键可见性规则

为确保可靠地提取价格,请在标记 HTML 时遵循以下可见性规则:

  • 入住总价必须可见: 使用 itemprop="price" 直接在页面上标记可见的价格数字 。请勿对价格数字使用隐藏的元数据 (<meta>) 或属性值 (value="..."content="...")。
  • 机器可读的入住日期: 尽可能在页面上标记可见的入住日期。如果需要,您可以在 <span>元素上使用content="..."属性来提供标准YYYY-MM-DD格式,同时显示 可见的日期(例如<span itemprop="checkinTime" content="2026-08-10">August 10, 2026</span>)。
  • 不可见字段: 未直接显示在页面上的字段 (例如酒店 ID 或币种代码)可以使用 <meta> 标记或 content="..." 属性。

3. 示例

以下端到端示例展示了如何使用导航属性和微数据为中间漏斗步骤和最终结账页面添加标记。

示例 1:包含可点击按钮的中间页面

以下代码段演示了一个中间客房选择页面 (room-selection),其中包含一个标记为推进流程的关键路径操作按钮:

<body data-nav-stage="room-selection">
  <!-- Main page content -->
  <button class="btn-continue"
          data-nav-criticalpath="true"
          data-nav-interactiontype="CLICK"
          data-nav-interactionorder="1">
    Book This Room
  </button>
</body>

示例 2:包含阶段指示器和最少微数据的最终价格页面

以下代码段演示了付款前的最后一个页面 (ready-for-payment),其中在data-nav-stage-final="true"封装容器上声明了 ,并且可见地显示了权威的入住价格:

<body data-nav-stage="ready-for-payment" data-nav-stage-final="true">

  <!-- Root Container: Co-Typed Hotel & LodgingReservation -->
  <div itemscope itemtype="https://schema.org/Hotel https://schema.org/LodgingReservation">
    
    <!-- Hotel Identifier (Can be hidden meta tag) -->
    <meta itemprop="identifier" content="grand-view-001" />
    <h1 itemprop="name">Grand View Hotel</h1>
    
    <!-- Visible Stay Dates & Occupancy -->
    <p>
      Check-in: <span itemprop="checkinTime" content="2026-08-10">Aug 10, 2026</span> |
      Check-out: <span itemprop="checkoutTime" content="2026-08-15">Aug 15, 2026</span> |
      Guests: <span itemprop="numAdults">2</span> Adults, <span itemprop="numChildren">1</span> Child
    </p>

    <!-- Single Minimal Rate Offer -->
    <div itemprop="makesOffer" itemscope itemtype="https://schema.org/Offer">
      <div itemprop="priceSpecification" itemscope itemtype="https://schema.org/CompoundPriceSpecification">
        
        <p class="summary-total">
          Total Stay Price (Taxes & Fees Included):
          
          <!-- 3-letter ISO Currency Code (can use content="" for hiding the 3-letter currency code while displaying a symbol) -->
          <span itemprop="priceCurrency" content="EUR">€</span>
          
          <!-- VISIBLE TOTAL STAY PRICE (Directly wrapped, no hidden attributes) -->
          <span itemprop="price">650.00</span>
        </p>

      </div>
    </div>

  </div>

</body>

4. 验证实现情况

在部署更改之前,请测试标记和导航标记,以确保抓取工具可以成功验证您的价格数据。

4.1 验证价格和微数据结构

您可以使用 Schema.org 验证器Google 富媒体搜索结果测试 来检查从页面网址或 HTML 内容中提取的微数据。对照 酒店价格结构化数据参考中的规范验证 提取的字段, 并确保 itemprop="price" 元素是页面上的可见项。

4.2 验证导航

如需验证标记,请在 Google Chrome 中打开浏览器开发者工具 ,方法是右键点击网页并选择检查 (或按 F12)以检查 HTML DOM。

确认您的实现满足以下导航要求:

  • 页面顶部阶段已声明: 预订流程中的每个页面 在其 <body> 或根封装容器标记中包含 data-nav-stage="...",并且 最终价格页面包含 data-nav-stage-final="true"
  • 关键路径完整: 中间页面的互动 元素(按钮或链接)带有 data-nav-criticalpath="true"data-nav-interactiontypedata-nav-interactionorder 标记。如果存在多项操作,请确保正确设置订单号。

4.3 验证可见性和标记质量

确认您的微数据满足所有结构和可见性要求 (如需了解详情,请参阅简化的结构化数据树关键可见性规则):

  • 严格的层次结构: 确保您的标记遵循所需的嵌套顺序 (简化的树形结构或完整的 结构化数据参考 规范)。抓取工具可能会遗漏未按顺序排列或嵌套不正确的元素。
  • 可见价格itemprop="price" 直接封装可见的价格 数字,而没有隐藏的属性或 <meta> 标记。
  • 机器可读的入住日期checkinTimecheckoutTime 包含 标准 YYYY-MM-DD(可以选择使用 content="..." 属性)。
  • 直接元素标记: 所有可见的属性(酒店名称、入住日期、入住人数)都封装可见的页面文本。