python的urllib实现有道词典简单的英译汉程序
# coding=utf-8
import urllib.request
import urllib
import json
urllib2 = urllib.request
headers = {
# "Host":"fanyi.youdao.com",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0",
"Accept":"application/json, text/javascript, */*; q=0.01",
# "Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
# 以下这个不屏蔽会导致中文不能翻译成英文
# "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With":"XMLHttpRequest",
# "Content-Length":"209",
# "Connection":"keep-alive"
}
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom="
key = input("请输入要翻译的内容:")
formdata = {
"i":key,
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt":"1525335936774",
"sign":"5747b87ca68723a7230af9cb648a04c1",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_REALTIME",
"typoResult":"false"
}
# 转码
data = urllib.parse.urlencode(formdata).encode(encoding='UTF-8')
# print(data)
# 发送请求
request = urllib2.Request(url,data = data ,headers = headers)
response = urllib2.urlopen(request)
html = response.read().decode('utf-8')
# strip()去掉首位空格
print("完整的结果:",html.strip()+'\n')
# json文件读取
target = json.loads(html)
# 最终字典列表输出
# print(target["translateResult"][0][0]["tgt"])
if target["type"] == 'ZH_CN2EN':
print('"%s"的英文翻译结果为:%s'%(key,target["translateResult"][0][0]["tgt"]))
elif target["type"] == 'EN2ZH_CN'or 'JA2ZH_CN':
print('"%s"的中文翻译结果为:%s'%(key,target["translateResult"][0][0]["tgt"]))