Python写的Google Indexing API,批量实时

2022-02-18  本文已影响0人  b4297d1af72d

什么是索引 API?

索引 API 是一种应用程序编程接口,允许网站所有者在添加或删除页面时通知 Google。这允许谷歌立即索引任何网页。它主要用于短期内容,例如职位发布和新闻文章。

使用索引 API 时,Google 会将这些 URL 优先于其他 URL 进行抓取和索引。

订阅我的时事通讯

使用索引 API,您可以:

更新索引中的 URL

从索引中删除 URL

获取最新请求的状态

发送批量请求以减少 API 调用次数。

要求

对于本教程,您将需要一些东西:

安装了Python

Google Search Console 的完整或所有者权限级别

检查您是否具有运行 API 的访问级别

转到Google Indexing API 游乐场

添加此请求正文。

{

  "url": "https://example.com",

  "type": "URL_UPDATED"

}

如果状态码是200,那么您拥有继续操作所需的一切。

创建您的 API 项目

转到Google 开发者控制台并创建一个新项目。

给它一个名字,然后单击“创建”。

创建服务帐号

服务帐户将充当与索引 API 交互的电子邮件。

确保您在刚刚创建的项目中。

创建 API 凭证

点击“管理服务帐户”。

单击“创建服务帐户”。

然后,使用所需信息创建服务帐户。

选择“所有者”角色。

您可以跳过下一步并创建服务帐户。

创建 API 密钥

首先,存储以“gserviceaccount.com”结尾的电子邮件以备后用。对于新创建的服务帐户,您需要创建 API 密钥作为应用程序的用户名和密码。

单击“添加密钥”>“创建新密钥”。

为您的私钥选择 JSON,然后单击“创建”。

将文件保存在安全的地方。

启用索引 API

现在,需要在您的项目中启用 API 才能使用它。

转到索引 API 库并在您的项目中启用它。

确保您在“indexing-api”项目中,然后单击“ENABLE”。

为服务帐户提供所有者状态

要使索引 API 正常工作,您需要在网站管理员中心为您的服务帐户电子邮件提供所有权。

转到网站管理员中心

添加要在其上使用索引 API 的属性,或从列表中选择。

转到“已验证的所有者”,然后单击“添加所有者”。

并添加服务帐户。这是您创建的以“gserviceaccount.com”结尾的电子邮件。您可以在凭据选项卡中找到它。

在 Python 中运行索引 API

要使用 Python 发布到索引 API,我们将使用oauth2client、httplib2和json库。要安装它们pip:

$ pip install oauth2client httplib2

然后,这是用于提取的 Python 代码。

fromoauth2client.service_account importServiceAccountCredentials

importhttplib2

importjson

url ='https://www.example.com/'

JSON_KEY_FILE ="credentials.json"

SCOPES =[ "https://www.googleapis.com/auth/indexing"]

ENDPOINT ="https://indexing.googleapis.com/v3/urlNotifications:publish"

# Authorize credentials

credentials =ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)

http =credentials.authorize(httplib2.Http())

# Build the request body

print(url)

content ={}

content['url'] =url

content['type'] ="URL_UPDATED"

json_content =json.dumps(content)

response, content =http.request(ENDPOINT, method="POST", body=json_content)

result =json.loads(content.decode())

使用 Python 向索引 API 发送批量请求

现在,您可以在单个请求中向多达 1000 个 URL 发送批量请求。

fromoauth2client.service_account importServiceAccountCredentials

fromgoogleapiclient.discovery importbuild

fromgoogleapiclient.http importBatchHttpRequest

importhttplib2

importjson

requests ={

    'https://www.jcchouinard.com/':'URL_UPDATED',

    'https://www.jcchouinard.com/about/':'URL_UPDATED'

}

JSON_KEY_FILE ="credentials.json"

SCOPES =[ "https://www.googleapis.com/auth/indexing"]

ENDPOINT ="https://indexing.googleapis.com/v3/urlNotifications:publish"

# Authorize credentials

credentials =ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)

http =credentials.authorize(httplib2.Http())

# Build service

service =build('indexing', 'v3', credentials=credentials)

definsert_event(request_id, response, exception):

    ifexception isnotNone:

      print(exception)

    else:

      print(response)

batch =service.new_batch_http_request(callback=insert_event)

forurl, api_type inrequests.items():

    batch.add(service.urlNotifications().publish(

        body={"url": url, "type": api_type}))

batch.execute()

索引 API 端点

使用 Google 的索引 API,您可以做 2 件事:

发布特定 URL 的更新

获取有关 URL 的最新更改的信息

执行批处理请求

发布端点

要发布更新,请创建POST对此 API 端点的请求:

https://indexing.googleapis.com/v3/urlNotifications:publish

在请求正文中,您可以定义两个参数:

URL_UPDATED: 更新索引中的 URL

URL_DELETED:从索引中删除 URL

元数据端点

要获取有关最新HTTP 请求的信息,请创建GET对此 API 端点的请求:

https://indexing.googleapis.com/v3/urlNotifications/metadata

批量请求端点

要将批处理请求发送到索引 API,POST请向此 API 端点发出请求:

https://indexing.googleapis.com/batch

索引 API 配额

Google 的 Indexing API 对可能的请求数量施加了配额。每天的默认请求数为 200。如果您需要增加配额,则需要向 Google 提交请求

话虽如此,索引 API 允许批量请求。这允许以 1000 个 URL 为一组的请求,加起来每天可以更新 20 万个 URL。

索引 API 错误

状态码403。状态:PERMISSION_DENIED。多种原因:访问级别不足,ceveloper 控制台中未启用索引 API

状态码429。状态:RESOURCE_EXHAUSTED。速率限制,因为您的配额已超出。

状态码403。状态:PERMISSION_DENIED。多种原因:访问级别不足,ceveloper 控制台中未启用索引 API

状态码400。状态:INVALID_ARGUMENT。请求的正文有问题。检查它是否遵循正确的格式。

请参阅其他索引 API 错误

上一篇下一篇

猜你喜欢

热点阅读