Python写的Google Indexing API,批量实时
什么是索引 API?
索引 API 是一种应用程序编程接口,允许网站所有者在添加或删除页面时通知 Google。这允许谷歌立即索引任何网页。它主要用于短期内容,例如职位发布和新闻文章。
使用索引 API 时,Google 会将这些 URL 优先于其他 URL 进行抓取和索引。
订阅我的时事通讯
使用索引 API,您可以:
更新索引中的 URL
从索引中删除 URL
获取最新请求的状态
发送批量请求以减少 API 调用次数。
要求
对于本教程,您将需要一些东西:
安装了Python
Google Search Console 的完整或所有者权限级别
检查您是否具有运行 API 的访问级别
添加此请求正文。
{
"url": "https://example.com",
"type": "URL_UPDATED"
}
如果状态码是200,那么您拥有继续操作所需的一切。
创建您的 API 项目
转到Google 开发者控制台并创建一个新项目。
给它一个名字,然后单击“创建”。
创建服务帐号
服务帐户将充当与索引 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 错误。