|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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')
复制代码 |
|