百度網址收錄api Python示例
衆所周知,國內搜索引擎百度市佔率第一,順利收錄的話,有助於提升站點影響力。本站百度N個月過去了一直未收錄,也不知道什麼原因,反正國外的Google、Bing收錄了,聽天由命吧。經常手動提交喫不消,關鍵那個手動提交每次限定20個地址,驗證的時候還要把圖片轉成水平,百度辛苦了,我也辛苦了。
按照百度的文檔示例,寫了個簡單python程序提交網址。腳本如下:
1 #!/usr/bin/env python
2
3 import requests
4
5 web_site = "https://xxx.com"
6 token = "your_baidu_api_token"
7
8 # api url 一定要格式化成這樣的地址,自己用params的話,百度會教你做人的^_^
9 baidu_api_url = "http://data.zz.baidu.com/urls?site={}&token={}".format(web_site, token)
10
11 header = {
12 "User-Agent": "curl/7.12.1",
13 "Host": "data.zz.baidu.com",
14 "Content-Type": "text/plain",
15 }
16
17 # urls.txt 保存你的提交地址,每行一個。和此程序在同一目錄
18 with open("urls.txt") as f:
19 urls = f.readlines()
20 urls = "".join(urls)
21
22 try:
23 r = requests.post(baidu_api_url, headers=header, data=urls)
24 print("推送地址:", r.url)
25 if r.status_code == 200:
26 print("推送成功:", r.json())
27 r.raise_for_status()
28 # 捕獲各種錯誤:
29 except requests.exceptions.HTTPError as errh:
30 print("Http Error:", errh)
31 except requests.exceptions.ConnectionError as errc:
32 print("Error Connecting:", errc)
33 except requests.exceptions.Timeout as errt:
34 print("Timeout Error:", errt)
35 except requests.exceptions.RequestException as err:
36 print("OOps: Something Else", err)
測試運行, baidu.py就是上面的程序, urls.txt裏面每行一個待提交的地址
(.venv) ➜ mephisto.cc git:(main) ✗ python3 baidu.py
推送地址: http://data.zz.baidu.com/urls?site=https://mephisto.cc&token=xxxxx
推送成功: {'remain': 2913, 'success': 29}
上面的意思爲:29個提交成功,剩餘可提交配額爲2913,看起來比手動提交的限額20個多很多。注意,每次urls.txt裏面填寫新的待提交的地址,原因在文末有介紹。
百度文檔摘錄:
API推送:最爲快速的提交方式,建議您將站點當天新產出鏈接立即通過此方式推送給百度,以保證新鏈接可以及時被百度收錄
1. 使用API推送功能會達到怎樣效果
- 及時發現:可以縮短百度爬蟲發現您站點新鏈接的時間,使新發布的頁面可以在第一時間被百度收錄
- 保護原創:對於網站的最新原創內容,使用API推送功能可以快速通知到百度,使內容可以在轉發之前被百度發現
2. 在什麼時機使用API推送提交功能效果最明顯?
- 頁面鏈接產生或發佈時立即提交,這樣效果是最好的
3. 重複提交已經發布的鏈接會有什麼問題?
- 會有兩個影響。第一,將浪費您提交的配額,每個站點每天可提交的數量是有限制的,如果您都提交了舊鏈接,當有新鏈接時可能因爲配額耗盡無法提交。第二,如果您經常重複提交舊鏈接,我們會下調您的配額,您可能會失去API推送功能的權限
最後修改於: Monday, August 28, 2023
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。