如題, 剛學(xué)習了requests的post方法, 現(xiàn)在用百度翻譯開發(fā)者平臺提供的接口來實踐下:
首先通過 https://fanyi-api.baidu.com/這個鏈接進入開發(fā)者平臺, 點擊產(chǎn)品服務(wù):
進入注冊界面完成開發(fā)者的注冊:
這里有兩個版本可供選擇:
一般用來玩玩的選第一個就可以了, 畢竟完全免費.
申請完畢后進入 管理控制臺, 可以在里面看到自己的appid和密鑰:
有了這些就可以開始編程了:
1 .首先api地址有兩個:
通用翻譯API HTTP地址:http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻譯API HTTPS地址:https://fanyi-api.baidu.com/api/trans/vip/translate
基本上用哪個都可以, https和http的區(qū)別也不是太大, 好像https更安全? 相比于http有個套接字什么的.
-
請求數(shù)據(jù)格式:
這里 get和 post都可以, 推薦使用post
-
使用python requests.post 函數(shù)發(fā)送數(shù)據(jù):
-
處理接收到的數(shù)據(jù)(json格式, 詳細說明在上篇文章):
-
運行結(jié)果 :
總的就這些步驟, 不是很復(fù)雜.
第二個就是hashlib, 百度翻譯開發(fā)者api要求我們將數(shù)據(jù)用MD5算法加密, python給我們實現(xiàn)好的許多跟密碼學(xué)有關(guān)的算法都在hashlib中:
完整代碼如下:
# coding='utf-8'
import requests
import uuid
import hashlib
# 1.創(chuàng)建百度翻譯api需要的數(shù)據(jù)格式
input_key = input('輸入待翻譯的數(shù)據(jù)(只支持中英文自動轉(zhuǎn)換):\n')
# 實現(xiàn)中英文互譯
data = {
'q': input_key,
'from': 'auto',
'to': 'auto',
# 百度翻譯開發(fā)者平臺申請
'appid': '換成自己的appid',
# 利用python標準庫生成標準格式的salt數(shù)據(jù)
'salt': str(uuid.uuid4()),
}
# 按指定要求生成簽名數(shù)據(jù)
sign = hashlib.md5((data['appid']+
data['q']+data['salt']+
'換成自己的密鑰').encode('utf-8'))
# 將bytes類型轉(zhuǎn)化成16進制數(shù)據(jù)
sign = sign.hexdigest()
data['sign'] = sign
# 2.向百度翻譯開發(fā)者接口url發(fā)送數(shù)據(jù),利用post
url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
# 利用requests的特點:即使url或者data中格式即使不是標準
# urlencoded類型, 也可以完成自動轉(zhuǎn)換.
# 永遠不要忘記一個合格spider的自我修養(yǎng): 加user-agent
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
}
response = requests.post(url, headers=headers, data=data)
response_json = response.json()
# 3.處理接收到的json數(shù)據(jù)
result_list = response_json['trans_result']
result_str = ''
result_len = len(result_list) - 1
for index, each in enumerate(result_list):
result_str += each['dst']
if index != result_len:
result_str += '\n'
print('{}'.format(result_str))