鱼C论坛

 找回密码
 立即注册
查看: 4074|回复: 1

[技术交流] 写个百度翻译

[复制链接]
发表于 2015-11-30 15:13:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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')

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-26 15:34:54 | 显示全部楼层
input那里可以试试循环读取每一行,然后再拼接起来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 08:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表