Python写的Google Indexing API,批量实时更新提交网站(转载)

什么是索引 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 错误

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352