Google網址收錄api Python示例
維護個人網站有一部分工作是讓搜索引擎快速收錄網頁內容,獲得自然搜索流量服務更多用戶。直接去 Google 等搜索引擎提交是一種方式,使用 API 直接提交是另外一種方式,當你一次想提交多個網址的時候,API 的方式更加方便。
1. 創建谷歌雲服務賬戶
Google index api 是和 google 雲平臺上管理的,這一步過程省略(網絡上有很多相關教程),設置成功後會下載一個 json 文件存到本地,文件裏面是一些密鑰信息,通過這個密鑰文件,才能獲得授權調用 Google 相關的 api
2. 編寫 Python 程序調用 api
-
準備環境,安裝依賴包
1pip install --upgrade google-api-python-client oauth2client
-
文件預覽
1(.venv) ➜ google-api-python-client tree 2. 3├── google_batch.py 4├── google_index.py 5├── hugo-368210-30b9660ab8b3.json 6├── readme.txt 7└── urls.txt 8 90 directories, 5 files
-
google_batch.py 用於批量提交
提交收錄一般爲
URL_UPDATED
,當然也可以刪除,有需要可查看對應的官方文檔。程序文件內容如下:
1from oauth2client.service_account import ServiceAccountCredentials 2from googleapiclient.discovery import build 3from googleapiclient.http import BatchHttpRequest 4import httplib2 5 6 7with open("urls.txt") as f: 8 new_urls = f.readlines() 9 10 11JSON_KEY_FILE = "hugo-368210-30b9660ab8b3.json" 12SCOPES = ["https://www.googleapis.com/auth/indexing"] 13ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish" 14 15# Authorize credentials 16credentials = ServiceAccountCredentials.from_json_keyfile_name( 17 JSON_KEY_FILE, scopes=SCOPES 18) 19http = credentials.authorize(httplib2.Http()) 20 21# Build service 22service = build("indexing", "v3", credentials=credentials) 23 24 25def insert_event(request_id, response, exception): 26 if exception is not None: 27 print(exception) 28 else: 29 print(response) 30 31 32batch = service.new_batch_http_request(callback=insert_event) 33 34# url updated 35for url in new_urls: 36 batch.add( 37 service.urlNotifications().publish(body={"url": url, "type": "URL_UPDATED"}) 38 ) 39 40batch.execute()
-
google_index.py 單個網址提交
文件裏面的
content
部分就是你要提交的網址信息和操作類型。程序示例:
1 2from oauth2client.service_account import ServiceAccountCredentials 3import httplib2 4 5SCOPES = ["https://www.googleapis.com/auth/indexing"] 6ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish" 7 8# service_account_file.json is the private key that you created for your service account. 9JSON_KEY_FILE = "hugo-368210-30b9660ab8b3.json" 10 11credentials = ServiceAccountCredentials.from_json_keyfile_name( 12 JSON_KEY_FILE, scopes=SCOPES 13) 14 15http = credentials.authorize(httplib2.Http()) 16 17# Define contents here as a JSON string. 18# This example shows a simple update request. 19# Other types of requests are described in the next step. 20 21content = """{ 22\"url\": \"http://mephisto.cc/zh-tw/tech/s2t/\", 23\"type\": \"URL_UPDATED\" 24}""" 25 26response, content = http.request(ENDPOINT, method="POST", body=content) 27print("response:", response) 28print("content:", content)
-
hugo-368210-30b9660ab8b3.json 密鑰文件
這個是創建谷歌雲服務帳戶後下載到本地的,裏面有敏感信息,value 部分已經手動刪除了, 僅供參考。
示例:
1{ 2 "type": "service_account", 3 "project_id": "", 4 "private_key_id": "", 5 "private_key": "", 6 "client_email": "", 7 "client_id": "", 8 "auth_uri": "", 9 "token_uri": "", 10 "auth_provider_x509_cert_url": "", 11 "client_x509_cert_url": "" 12}
-
urls.txt 批量網址文件
這個是我自己習慣的網址存放方式,一行一個網址,示例:
1(.venv) ➜ google-api-python-client cat urls.txt 2https://mephisto.cc//note/hero-chen/ 3https://mephisto.cc/zh-tw/note/hero-chen/
上面就是一個文章的簡體地址和繁體地址,單文件更新的時候不需要這個文件,也可以改成自己需要組織格式,懂 python 的自己修改下
google_batch.py
文件即可。
-
3. 多網址提交實際操作示例
-
修改
urls.txt
,這一步可以自己通過程序自動生成 -
運行程序
1python google_batch.py
- 示例
1(.venv) ➜ google-api-python-client python google_batch.py 2{'urlNotificationMetadata': {'url': 'https://mephisto.cc/tech/google-index-api-python/\n', 'latestUpdate': {'url': 'https://mephisto.cc/tech/google-index-api-python/\n', 'type': 'URL_UPDATED', 'notifyTime': '2023-04-10T01:48:20.759700010Z'}}} 3{'urlNotificationMetadata': {'url': 'https://mephisto.cc/zh-tw/tech/google-index-api-python/\n', 'latestUpdate': {'url': 'https://mephisto.cc/zh-tw/tech/google-index-api-python/\n', 'type': 'URL_UPDATED', 'notifyTime': '2023-04-10T01:48:20.759685330Z'}}}
單文件提交就不操作了,當你提交收錄請求後,Google 會逐步處理,比百度快多了。
最後修改於: Monday, August 28, 2023
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。