用python實現簡單的線上翻譯程式
4 傳送POST請求
4.3 用poster獲取有道線上翻譯
參考有道翻譯:http://fanyi.youdao.com/
通過Fiddler工具可以獲取到
請求的URL地址為:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
提交的請求體引數
i=hello
from=AUTO
to=AUTO
smartresult=dict
client=fanyideskweb
salt=16002154063071
sign=37d97277cb051e71959e772b91309b2b
lts=1600215406307
bv=7e14dfdb6b3686cc5af5e5294aaded19
doctype=json
version=2.1
keyfrom=fanyi.web
action=FY_BY_REALTlME
其中,關鍵引數:
i:要翻譯的單詞
salt:鹽值
sign:簽名
鹽值和簽名是後臺反爬蟲的機制
使用poster來模擬傳送post請求
但是會出現 {"errorCode":50} 錯誤,因為伺服器有反爬蟲機制
只要鹽值和簽名不同,就會報錯
經過網上大神指點,把translate_o改為translate即可
4.4 用python實現簡單的線上翻譯程式
from urllib import request, parse
import ssl
import random
# 常用User-Agent列表
ua_list = [
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12',
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1 QQBrowser/6.9.11079.201',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)',
]
# 載入一個頁面
def loadPage(url, word):
# 在ua_list列表中隨機選擇一個UserAgent
userAgent = random.choice(ua_list)
headers = {
'User-Agent': userAgent
}
# 發起一個請求
req = request.Request(url, headers = headers)
# 建立未經過驗證的上下文的程式碼
context = ssl._create_unverified_context()
data = {
'i': word,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': '16002154063071',
'sign': '37d97277cb051e71959e772b91309b2b',
'lts': '1600215406307',
'bv': '7e14dfdb6b3686cc5af5e5294aaded19',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'
}
data = parse.urlencode(data).encode('utf-8')
# 開啟響應的物件
response = request.urlopen(req, context=context, data=data)
# 獲取響應的內容
html = response.read()
# 對獲取到的unicode編碼進行解碼
content = html.decode('utf-8')
return content
import json
def fanyi(word):
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
content = loadPage(url, word)
jsondicts = json.loads(content)
return jsondicts['translateResult'][0][0]['tgt']
if __name__ == '__main__':
word = input('請輸入要翻譯的單詞:')
result = fanyi(word)
print('翻譯的結果為:', result)
以上就是相關實現的程式碼了。
相關文章
- python 爬蟲 簡單實現百度翻譯Python爬蟲
- 用Python做一個簡單的翻譯工具Python
- 翻譯:《實用的Python程式設計》InstructorNotesPython程式設計Struct
- 實用的線上翻譯工具:Translatium for Mac中文版Mac
- 翻譯:《實用的Python程式設計》09_01_PackagesPython程式設計Package
- 翻譯:《實用的Python程式設計》03_04_ModulesPython程式設計
- 翻譯:《實用的Python程式設計》04_00_OverviewPython程式設計View
- 翻譯:《實用的Python程式設計》04_01_ClassPython程式設計
- 翻譯:《實用的Python程式設計》04_02_InheritancePython程式設計
- 翻譯:《實用的Python程式設計》02_04_SequencesPython程式設計
- 翻譯:《實用的Python程式設計》01_03_NumbersPython程式設計
- 翻譯:《實用的Python程式設計》03_01_ScriptPython程式設計
- 翻譯:《實用的Python程式設計》01_06_FilesPython程式設計
- 翻譯:《實用的Python程式設計》01_07_FunctionsPython程式設計Function
- 翻譯:《實用的Python程式設計》02_01_DatatypesPython程式設計
- 用JS實現前端開發單元測試(翻譯)JS前端
- 翻譯:《實用的Python程式設計》04_03_Special_methodsPython程式設計
- 翻譯:《實用的Python程式設計》08_01_TestingPython程式設計
- 翻譯:《實用的Python程式設計》09_02_Third_partyPython程式設計
- 翻譯:《實用的Python程式設計》06_01_Iteration_protocolPython程式設計Protocol
- 翻譯:《實用的Python程式設計》03_05_Main_modulePython程式設計AI
- 翻譯:《實用的Python程式設計》01_04_StringsPython程式設計
- 翻譯:《實用的Python程式設計》03_02_More_functionsPython程式設計Function
- 翻譯:《實用的Python程式設計》02_02_ContainersPython程式設計AI
- 翻譯:《實用的Python程式設計》05_01_Dicts_revisitedPython程式設計
- 翻譯:《實用的Python程式設計》05_02_Classes_encapsulationPython程式設計
- 翻譯:《實用的Python程式設計》03_03_Error_checkingPython程式設計Error
- 翻譯:《實用的Python程式設計》02_06_List_comprehensionPython程式設計
- 如何完成中文翻譯日文線上翻譯
- 語音翻譯軟體怎麼用?怎麼實現語音的翻譯
- 【翻譯】ECMAScript裝飾器的簡單指南
- 翻譯:《實用的Python程式設計》06_02_Customizing_iterationPython程式設計
- 翻譯:《實用的Python程式設計》06_03_Producers_consumersPython程式設計
- 翻譯:《實用的Python程式設計》08_02_LoggingPython程式設計
- 翻譯:《實用的Python程式設計》08_03_DebuggingPython程式設計
- 用程式碼簡單的實現跑馬燈效果
- 簡單的python程式碼實現語音朗讀Python
- 10分鐘教你用Python實現微信翻譯機器人Python機器人