#coding=utf-8
importurllibimporturllib2importjson‘‘‘功能说明:
根据输入要翻译的文字,进行有道自动翻译:
实现中文->英文、英语及其他语言->中文的转换‘‘‘
classYoudaoFanyi:def __init__(self):
self.url= ‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/‘self.headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36",
}defget_encoded_payload(self, key):‘‘‘:param key: 带翻译的文字
:return: 返回url编码过的数据‘‘‘payload={"i": key,‘type‘: ‘AUTO‘,"doctype": "json","xmlVersion": "1.8","keyfrom": "fanyi.web","action": "FY_BY_CLICKBUTTON","typoResult": "true","ue": "UTF-8"}
data=urllib.urlencode(payload)returndatadefshow_translate_result(self, html):‘‘‘解析返回的json数据
:param html: 返回的json数据
:return: None‘‘‘data=json.loads(html)print ‘*‘ * 10target= data[‘translateResult‘][0][0][‘tgt‘]printtargetif ‘smartResult‘ indata:
result= data[‘smartResult‘][‘entries‘]
result_str= ‘\n‘.join(result[1:]) #result列表中第一个元素为""
print ‘有道词典结果‘
printresult_strprint ‘*‘ * 10
deftranslate(self, content):‘‘‘对输入的内容进行翻译
:param content: 带翻译的内容
:return: None‘‘‘payload= self.get_encoded_payload(content) #获取经过url编码后的数据
request =urllib2.Request(
self.url,
data=payload,
headers=self.headers) #构造请求
response = urllib2.urlopen(request) #发送请求
self.show_translate_result(response.read()) #解析结果
if __name__ == ‘__main__‘:
youdao=YoudaoFanyi()whileTrue:
key= raw_input("请输入你要翻译的文字[Q|quit 退出]:").strip()if key in [‘Q‘, ‘quit‘]:breakyoudao.translate(key)