# coding=utf-8
# Python3.x
"""
利用有道翻译
"""
# import hashlib
# import time
# from random import choice, randint
# import urllib.parse
# import urllib.request
import json
import requests
def traslate(words):
# x = time.ctime()+str(randint(1, 11))
# y = "fanyideskweb" + words + x + "ebSeFb%=XZ%T[KZ)c(sy!"
# # 创建MD5对象
# m = hashlib.md5()
# b = y.encode(encoding='utf-8')
# m.update(b)
# z = m.hexdigest()
# 目标URL
targeturl = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
# 自定义表单,
form_data = {
"type": "AUTH",
"i": words,
# "salt": x,
# "sign": z,
"doctype": "json",
"Version": "2.1",
"keyfrom": "fanyi.web",
"ue": "UTF-8",
"action": "FY_BY_CLICKBUTTON",
"typoResult": "false"
}
# 方法一 利用urllib.request
# # 将data转换成标准格式
# data = urllib.parse.urlencode(data).encode("utf-8")
# # 发送用户请求
# html = urllib.request.urlopen(targeturl, data)
# 读取并解码内容
# result = html.read().decode('utf-8')
# 利用json.loads(xxx)字符串转成字典
# res_dict = json.loads ( result )
# 字典里面返回翻译的内容
# return res_dict["translateResult"][0][0]["tgt"]
# 方法二 这里我们使用requests库比较方便
html = requests.post(url=targeturl, data=form_data)
# 返回响应内容
text = html.content
# 转成原有的字典格式
res_dict = json.loads(text)
return res_dict["translateResult"][0][0]["tgt"]
if __name__ == '__main__':
print('\033[0;36m"q"表示退出,支持中英翻译,')
print("-"*10)
while True:
words = input("请输入需要查询的单词或者句子:\n")
if words in ['q', "Q"]:
break
res = traslate(words)
print('\033[1m翻译结果:\033[0m', '\033[1;31m%s\033[0m' % res)
测试结果如下
注意
如果无法运行 尝试将最上面注释的加密salt sign 代码放开,