使用 Indexing API

概览

您可以使用 Indexing API 通知 Google 更新或移除 Google 索引中的网页。请求必须指定网页的位置。您还可以获取您已发送给 Google 的通知的状态。目前,Indexing API 只能用于抓取包含招聘信息直播结构化数据的网页。

当您向 Indexing API 发送请求时,请指定独立网页的位置,以通知 Google 可以抓取此网页或从索引中移除此网页。

以下示例显示了您可以使用 Indexing API 执行的操作:

更新网址
POST https://indexing.googleapis.com/v3/urlNotifications:publish
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_UPDATED"
}
移除网址
POST https://indexing.googleapis.com/v3/urlNotifications:publish
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_DELETED"
}
获取通知状态
GET https://indexing.googleapis.com/v3/urlNotifications/metadata

参数

下表介绍了所有方法所需的字段(更新和移除网址):

字段
url

必需

要更新或移除的内容的完全限定位置。

type

必需

您提交的通知的类型。

准则

以下准则适用于更新和移除网址请求。

  • 所有对 https://indexing.googleapis.com/v3/UrlNotifications:publish 的调用都必须使用“application/json”作为 Content-Type 标头。
  • 您可以仅在更新请求的正文中提交一个网址,或者如发送批量索引编制请求中所述,批量整合最多 100 个请求。
  • 这些示例中的请求正文是访问令牌示例中使用的 content 变量的值。

更新网址

要将需抓取的新网址告诉 Google,或通知 Google 之前提交的网址的内容已更新,请按以下步骤操作:

  1. POST 请求提交到以下端点:
    POST https://indexing.googleapis.com/v3/urlNotifications:publish
  2. 在请求的正文中,使用以下语法指定网页的位置:
    {
      "url": "content_location",
      "type": "URL_UPDATED"
    }
  3. Google 会对成功的 Indexing API 调用做出 HTTP 200 响应。HTTP 200 响应意味着 Google 可能很快会尝试重新抓取此网址。响应的正文包含 UrlNotificationMetadata 对象,其字段对应于通知状态请求返回的字段。
  4. 如果您没收到 HTTP 200 响应,请参阅与 Indexing API 相关的错误
  5. 如果网页内容发生变化,请另外提交一个更新通知,这会触发 Google 重新抓取该网页。
  6. 您可能需要超出默认配给量的配额。要查看当前配额和申请更多配额,请参阅配额

移除网址

当您从服务器中删除网页后,请通知 Google,以便我们可以从索引中移除该网页,并且不会再次尝试抓取该网址。在请求移除之前,您必须从服务器中移除该网页,并且该网址必须返回 404 或 410 状态代码。

要请求从我们的索引中移除网页,请按以下步骤操作:

  1. POST 请求提交到以下端点:
    POST https://indexing.googleapis.com/v3/urlNotifications:publish
  2. 使用以下语法在请求的正文中指定要移除的网址:
    {
      "url": "content_location",
      "type": "URL_DELETED"
    }

    例如:

    {
      "url": "https://careers.google.com/jobs/google/technical-writer",
      "type": "URL_DELETED"
    }
  3. Google 会对成功的 Indexing API 调用做出 HTTP 200 响应。HTTP 200 响应意味着 Google 可能会从索引中移除此网址。响应的正文包含 UrlNotificationMetadata 对象,其字段对应于通知状态请求返回的字段。
  4. 如果您没收到 HTTP 200 响应,请参阅与 Indexing API 相关的错误
  5. 您可能需要超出默认配给量的配额。要查看当前配额和申请更多配额,请参阅配额

获取通知状态

您可以使用 Indexing API 查看 Google 上次针对特定网址收到每种通知的时间。GET 请求不会告知您 Google 何时将网址编入索引或移除网址;它只返回您是否已成功提交请求的结果。

要获取通知的状态,请按以下步骤操作:

  1. GET 请求提交到以下端点。您指定的网址必须经过网址编码。例如,使用 %3A 替换 :(冒号),使用 %2F 替换 /(正斜杠)。
    GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url=url-encoded_url

    例如:

    GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url=https%3A%2F%2Fcareers.google.com%2Fjobs%2Fgoogle%2Ftechnical-writer
    
  2. Indexing API 做出 HTTP 200 消息响应,其负载包含有关通知的详细信息。以下示例显示了包含更新通知和删除通知相关信息的响应正文:
    {
      url: “http://foo.com“
      latest_update {
        type: “URL_UPDATED”
        notify_time: “2017-07-31T19:30:54.524457662Z”
      }
      latest_remove {
        type: “URL_DELETED”
        notify_time: “2017-08-31T19:30:54.524457662Z”
      }
    }
    
  3. 如果您没收到 HTTP 200 响应,请参阅与 Indexing API 相关的错误
  4. 您可能需要超出默认配给量的配额。要查看当前配额和申请更多配额,请参阅配额

发送批量索引编制请求

要减少客户端需要创建的 HTTP 连接数,您可以将最多 100 个 Indexing API 调用整合到单个 HTTP 请求中。您可以在被称为一个批次的多部分请求中执行此操作。

向 Indexing API 发送批量请求时,请使用以下端点:

https://indexing.googleapis.com/batch

批量请求的正文包含多个部分。每个部分本身都是一个完整的 HTTP 请求,拥有自己的动词、网址、标头和正文。批量请求中的每个部分的大小不能超过 1MB。

为了方便您发送批量请求,Google 的 API 客户端库支持批量处理功能。要详细了解如何使用客户端库进行批量处理,请参阅以下特定语言的网页:

如果您使用这些网页上的批量处理示例代码,则可能需要更新您的代码以反映获取访问令牌中所述的实现要求。

以下示例批量请求消息正文包含更新通知和移除通知:

POST /batch HTTP/1.1
Host: indexing.googleapis.com
Content-Length: content_length
Content-Type: multipart/mixed; boundary="===============7330845974216740156=="
Authorization: Bearer oauth2_token

--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+2>

POST /v3/urlNotifications:publish [1]
Content-Type: application/json
accept: application/json
content-length: 58

{ "url": "http://example.com/jobs/42", "type": "URL_UPDATED" }
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+1>

POST /v3/urlNotifications:publish [2]
Content-Type: application/json
accept: application/json
content-length: 75

{ "url": "http://example.com/widgets/1", "type": "URL_UPDATED" }
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+3>

POST /v3/urlNotifications:publish [3]
Content-Type: application/json
accept: application/json
content-length: 58

{ "url": "http://example.com/jobs/43", "type": "URL_DELETED" }
--===============7330845974216740156==

如需了解详情,请参阅发送批量请求

发送以下问题的反馈:

此网页