最近有一个需求:向Google提交url,以便让Google搜索引擎能够更容易的搜索到我司域名下的产品地址,之前是人工通过页面提交的,由于url数量的不断增加,迫切需要转变为代码运作;
Google正好有一个API可以实现这一需求,它就是Google indexing API
借助 Indexing API,任何网站所有者都可在添加或移除网页时直接告知 Google。这样一来,Google 就能及时整理网页并安排进行新的抓取,从而带来更优质的用户流量。目前,Indexing API 只能用于抓取包含 JobPosting 或 BroadcastEvent(嵌套于 VideoObject)的网页。对于包含很多短效网页(如招聘信息或直播视频)的网站,Indexing API 会通过为不同的内容分别推送更新,使搜索结果中的内容保持最新状态。
以下是您可以使用 Indexing API 执行的一些操作:
我们这里需要用到的是第一个(更新网址)和最后一个(发送批量索引编制请求)
思路如下:
下面进入正题:
1、首先启用indexing API
登录Google账号,打开服务账号页面(没有Google账号的自己注册,最近貌似只能用gmail邮箱注册):
https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts?hl=zh-cn&supportedpurview=project
创建一个或者选择一个现有项目
在上面输入框中搜索indexing API
进入第一个结果,点击“启用”,我这里已经启用了,显示的是“管理”
返回控制台,查看已启动的APP,新增indexing API
调用indexing API提示需要使用server account,下面我们进行创建
从控制台进入凭据菜单,创建凭据(crete credential)
赋予权限,添加key(有两种格式的认证文件json,p12)
通过网站授权就可以进行使用了
# -*-coding:utf-8
# author:lihaizhen
# date:
# description:
import json
from oauth2client.service_account import ServiceAccountCredentials
import httplib2
SCOPES = ["https://www.googleapis.com/auth/indexing"]
ENDPOINT = "https://content-indexing.googleapis.com/v3/urlNotifications:publish?alt=json"
JSON_KEY_FILE = "modular-silicon-2006-a1f082705.json"
credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
http = credentials.authorize(httplib2.Http())
content ={
"url": "https://www.hurela.com/hurela-pre-plucked-hd-lace-wigs-body-wave-5x5-lace-closure-wigs-human-hair-180-density-natural-color.html",
"type": "URL_UPDATED"
}
response,content = http.request(ENDPOINT, method="POST", body=json.dumps(content))
print(response)
print(content.decode())
如果执行成功,会得到如下的结果
{'content-type': 'application/json; charset=UTF-8', 'vary': 'Origin, X-Origin, Referer', 'date': 'Wed, 20 Jul 2022 02:06:14 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', 'transfer-encoding': 'chunked', 'status': '200', 'content-length': '437', '-content-encoding': 'gzip'}
{
"urlNotificationMetadata": {
"url": "https://www.hurela.com/hurela-pre-plucked-hd-lace-wigs-body-wave-5x5-lace-closure-wigs-human-hair-180-density-natural-color.html",
"latestUpdate": {
"url": "https://www.hurela.com/hurela-pre-plucked-hd-lace-wigs-body-wave-5x5-lace-closure-wigs-human-hair-180-density-natural-color.html",
"type": "URL_UPDATED",
"notifyTime": "2022-07-20T02:06:14.565171326Z"
}
}
}
如果失败,根据返回的status状态码进行问题查询
https://developers.google.com/search/apis/indexing-api/v3/core-errors?hl=zh-cn