马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 FDMa 于 2015-11-30 15:15 编辑
初学爬虫时,小甲鱼用的有道翻译举例,当时我就去看了一眼百度翻译的结果百度用javascript,这玩应真不会:cry
最近看到一个百度翻译api开放平台,就想写一个用百度的翻译。写一半才发现百度已经给提供包括python在内的多语言代码:cry
百度给的是python2.X版本,幸亏不是3不然白忙活了:mad: 附:官方api地址http://api.fanyi.baidu.com/api/trans/product/apidoc
[/写的时候还是发现问了,希望有大大帮解决一下:sad ,一开始想用input接受要翻译的内容,
但是input不能接受多行输入]
最终我是先将要翻译的内容写在同文件夹下的记事本里再读取这个记事本:huffy: ,不过这种方法也太反人类了!!!
写的时候也知道我的代码写的又臭又长,请各位大神轻拍 python3.5#/usr/bin/env python
import hashlib
from urllib import request, parse
import random
apiHTTP = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
yuyanjianxie = '''
语言简写 名称
auto 自动检测
zh 中文
en 英语
yue 粤语
wyw 文言文
jp 日语
kor 韩语
fra 法语
spa 西班牙语
th 泰语
ara 阿拉伯语
ru 俄语
pt 葡萄牙语
de 德语
it 意大利语
el 希腊语
nl 荷兰语
pl 波兰语
bul 保加利亚语
est 爱沙尼亚语
dan 丹麦语
fin 芬兰语
cs 捷克语
rom 罗马尼亚语
slo 斯洛文尼亚语
swe 瑞典语
hu 匈牙利语
cht 繁体中文
'''
#q = input('需要翻译的内容')#这里非常愁人input不能接受多行文本,我能想到的办法就只有写在文件里
with open('新建文本文档.txt') as sss:
q = sss.read()
q = q.replace('\n','\\n')
def mdsign():
APPID = '20151130000006939'
global salt
salt = str(random.randint(32768, 65536))
mishi = 'Op8vyyBZYlSiVe3lEidc'
sign = hashlib.md5((APPID+q+salt+mishi).encode('utf-8'))
return sign.hexdigest()
def yuyan():
to = input('请输入目标语言简写,默认zh')
if to not in yuyanjianxie or to == '':
to = 'auto'
def fanyi(to,from0='auto'):
msign =mdsign()
#print('\n'+'msign',msign)
#这里做URL encode
post = {'q':q,'from':from0,'to':to,'appid':'20151130000006939',
'salt':salt,'sign':msign}
post = parse.urlencode(post).encode('utf-8')
#print(post)
return post
return fanyi(to)
import json
post = yuyan()
def msg():
response = request.urlopen(apiHTTP,post)
req = response.read().decode()
req2 = json.loads(req)
if req2.get("error_code")=="52001" or req2.get("error_code")=="52002":
msg()
if req2.get("error_code")=="54004":
print('百度说我没钱了,不给翻译你可以选择则下个月再试试\n<总之我是不会充钱的>')
return(req2)
req2 = msg()
print('由(%s)翻译为(%s)' %\
(req2.get('from','糟糕出错了,没有找到from'),\
req2.get('to', '糟糕出错了,没有找到to')))
print('翻译结果为\n',req2.get('trans_result',req2)[0]['dst'].replace('\\n','\n')
|