鱼C论坛

 找回密码
 立即注册
查看: 3882|回复: 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
  1. #/usr/bin/env python
  2. import hashlib
  3. from urllib import request, parse
  4. import random
  5. apiHTTP = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
  6. yuyanjianxie = '''
  7. 语言简写            名称
  8. auto                自动检测
  9. zh                  中文
  10. en                  英语
  11. yue                 粤语
  12. wyw                 文言文
  13. jp                  日语
  14. kor                 韩语
  15. fra                 法语
  16. spa                 西班牙语
  17. th                  泰语
  18. ara                 阿拉伯语
  19. ru                  俄语
  20. pt                  葡萄牙语
  21. de                  德语
  22. it                  意大利语
  23. el                  希腊语
  24. nl                  荷兰语
  25. pl                  波兰语
  26. bul                 保加利亚语
  27. est                 爱沙尼亚语
  28. dan                 丹麦语
  29. fin                 芬兰语
  30. cs                  捷克语
  31. rom                 罗马尼亚语
  32. slo                 斯洛文尼亚语
  33. swe                 瑞典语
  34. hu                  匈牙利语
  35. cht                 繁体中文
  36. '''
  37. #q = input('需要翻译的内容')#这里非常愁人input不能接受多行文本,我能想到的办法就只有写在文件里
  38. with open('新建文本文档.txt') as sss:
  39.     q = sss.read()
  40.     q = q.replace('\n','\\n')
  41. def mdsign():
  42.     APPID = '20151130000006939'
  43.     global salt
  44.     salt = str(random.randint(32768, 65536))
  45.     mishi = 'Op8vyyBZYlSiVe3lEidc'
  46.     sign = hashlib.md5((APPID+q+salt+mishi).encode('utf-8'))
  47.     return sign.hexdigest()

  48. def yuyan():   
  49.     to = input('请输入目标语言简写,默认zh')
  50.     if to not in yuyanjianxie or to == '':
  51.         to = 'auto'
  52.     def fanyi(to,from0='auto'):
  53.         msign =mdsign()
  54.         #print('\n'+'msign',msign)
  55.         #这里做URL encode
  56.         post = {'q':q,'from':from0,'to':to,'appid':'20151130000006939',
  57.             'salt':salt,'sign':msign}
  58.         post = parse.urlencode(post).encode('utf-8')
  59.         #print(post)
  60.         return post
  61.     return fanyi(to)

  62. import json

  63. post = yuyan()
  64. def msg():
  65.     response = request.urlopen(apiHTTP,post)
  66.     req = response.read().decode()
  67.     req2 = json.loads(req)
  68.     if req2.get("error_code")=="52001" or req2.get("error_code")=="52002":
  69.         msg()
  70.     if req2.get("error_code")=="54004":
  71.         print('百度说我没钱了,不给翻译你可以选择则下个月再试试\n<总之我是不会充钱的>')
  72.     return(req2)
  73.    
  74. req2 = msg()
  75. print('由(%s)翻译为(%s)' %\
  76.       (req2.get('from','糟糕出错了,没有找到from'),\
  77.        req2.get('to', '糟糕出错了,没有找到to')))
  78. 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-4-27 09:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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