Google indexing api是谷歌提供的针对搜索引擎索引功能的接口,相比于在Google search console上提交sitemap,API收录速度要快得多。刚开始的时候,我在GSC上提交了sitemap,后来一段时间,就不抓取了,也不收录,不清楚什么原因。后来使用api直接提交,第二天就可以索引到了。
操作步骤参考官方文档:
https://developers.google.com/search/apis/indexing-api/v3/quickstart
官方也提供了一些例程,可以参考文档内描述,但是,更方便的方法是使用他们的第三方库。
Github地址: google-api-python-client
repo内有许多的例程,使用的话,可以直接安装google-api-python-client
pip install google-api-python-client
更新/添加网址代码:
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
def publish():
successful=[]
urls = ['http://baidu.com']
requests={url:"URL_UPDATED" for url in urls}
JSON_KEY_FILE = 'xxxxx.json'
SCOPES = ["https://www.googleapis.com/auth/indexing"]
# Authorize credentials
credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
# Build service
service = build('indexing', 'v3', credentials=credentials)
def index_api_callback(request_id, response, exception):
if exception is not None:
print(f'id: {request_id}, exception: {exception}')
else:
successful.append(response['urlNotificationMetadata']['url'])
batch = service.new_batch_http_request(callback=index_api_callback)
for url, api_type in requests.items():
batch.add(service.urlNotifications().publish(
body={"url": url, "type": api_type}))
batch.execute()
return successful
if __name__ == "__main__":
publish()
常用的操作类型应该只有2种,更新 URL_UPDATED
,和删除 URL_DELETED
截至本文撰写时,在国内访问,由于各种原因,无法成功提交请求,甚至,我无法成功ping通目标主机indexing.googleapis.com
,以至于我的请求出错:
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
可以在colab
上操作,网络没有问题,可以一试,但注意不要泄露key。
祝君好运。