利用python進行有道翻譯
阿新 • • 發佈:2019-02-10
# -*- coding: UTF-8 -*- from urllib import request from urllib import parse import json def youdao(English): Request_URL='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' From_Data={} # From_Data['type']=AUTO From_Data['i']=English From_Data['from']='AUTO' From_Data['to']='AUTO' From_Data['smartresult']='dict' From_Data['client']='fanyideskweb' From_Data['salt']='1525344419877' From_Data['sign']='721bbfed345b0d955d8691221ed2b1e1' From_Data['doctype']='json' From_Data['version']='2.1' From_Data['keyfrom']='fanyi.web' From_Data['action']='FY_BY_REALTIME' From_Data['typoResult']='false' data=parse.urlencode(From_Data).encode('utf-8') #當字串資料以url的形式傳遞給web伺服器時,字串中是不允許出現空格和特殊字元,因此我們需要轉化格式 response=request.urlopen(Request_URL,data) #urlopen是urlopen裡的一個方法函式通過網址URL來獲取資料:urlopen(url, data=None, proxies=None) #引數 url 表示遠端資料的路徑,一般是 http 或者 ftp 路徑。 #引數 data 表示以 get 或者 post 方式提交到 url 的資料。 #引數 proxies 表示用於代理的設定 html=response.read().decode('utf-8') translate_results=json.loads(html) #將json字串編碼為python物件 translate_results = translate_results['translateResult'][0][0]['tgt'] #找到翻譯結果,由translate的結果而來 print(translate_results) if __name__ == "__main__": youdao('English')
如果出現KeyError: 'translateResult',是因為URL地址為
Request URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
將translate_o?中的_o去掉就行了