环境:Python3.5
使用有道翻译,通过Post提交json来实现
源码如下
import urllib.request
import urllib.parse
import json
def fanyi(content):
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/link'
data={}
data['type']='AUTO'
data['i']=content
data['doctype']='json'
data['xmlVersion']='1.8'
data['keyfrom']='fanyi.web'
data['ue']='UTF-8'
data['action']='FY_BY_CLICKBUTTON'
data['typeResult']='true'
#重新编码为utf8
data=urllib.parse.urlencode(data).encode('utf-8')
resquse=urllib.request.Request(url,data)
#第二种添加head的方法
resquse.add_header('User-Agent','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0')
response=urllib.request.urlopen(url,data)
#返回值
html=response.read().decode('utf-8')
#json解码后为词典
jsonLoad=json.loads(html)
#获取解码后得值
translateResult=jsonLoad['translateResult'][0][0]['tgt']
print('翻译结果为:'+translateResult)
#其他意思
try:
smartResult=jsonLoad['smartResult']['entries']
for i in smartResult:
if(i):
print('其他意思'+i)
except KeyError:
print('只有一个意思')
print('************************************************************************')
if __name__=='__main__':
while True:
print("请输入要翻译的内容,如果退出输入q")
content=input()
if(content=='q'):
break
fanyi(content)
测试结果:
/usr/bin/python3.5 /home/lcy/PycharmProjects/youdaofanyi/fanyi.py
请输入要翻译的内容,如果退出输入q
你在干嘛?
翻译结果为:What are you doing?
只有一个意思
************************************************************************
请输入要翻译的内容,如果退出输入q
Python
翻译结果为:Python
其他意思n. 巨蟒;大蟒;丹舌
其他意思n. (Python)人名;(法)皮东
************************************************************************
请输入要翻译的内容,如果退出输入q