python 百度翻译 有道翻译

曾经终败给现在 2022-10-15 04:57 700阅读 0赞

百度翻译

  • baidufanyi.py

    import requests
    import re
    import json
    import execjs

    URL = ‘https://fanyi.baidu.com/?aldtype=16047#zh/en/‘
    TRANSLATE_API = ‘https://fanyi.baidu.com/v2transapi‘
    REALTRANSLATE_API = ‘https://fanyi.baidu.com/transapi‘

    HEADERS = {

    1. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0',
    2. 'Accept': '*/*',
    3. 'Accept-Language': 'zh-CN,zh;q=0.9',
    4. 'Connection': 'keep-alive',
    5. 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    6. 'Host': 'fanyi.baidu.com',
    7. 'Origin': 'https://fanyi.baidu.com',
    8. 'Referer': 'https://fanyi.baidu.com/',
    9. 'X-Requested-With': 'XMLHttpRequest',

    }

    HEADERS2 = { ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0’, ‘Accept’: ‘/‘, ‘Accept-Language’: ‘zh-CN,zh;q=0.9’, ‘Connection’: ‘keep-alive’, ‘Content-Type’: ‘application/x-www-form-urlencoded; charset=UTF-8’, ‘Host’: ‘fanyi.baidu.com’, ‘Origin’: ‘https://fanyi.baidu.com‘, ‘Referer’: ‘https://fanyi.baidu.com/‘, ‘X-Requested-With’: ‘XMLHttpRequest’, ‘Cookie’: ‘BAIDUID=BEA2658FC962DF6CA0C053E5690C1934:FG=1; locale=zh; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1540531940; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1540531984; from_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D; to_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D’}

  1. Cookie = 'REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1540531940; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1540531984; from_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D; to_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D'
  2. class fanYi:
  3. def __init__(self):
  4. self._session = requests.session()
  5. self._data = {
  6. 'from': 'en',
  7. 'to': 'zh',
  8. 'query': '',
  9. 'transtype': 'realtime',
  10. 'simple_means_flag': '3',
  11. 'sign': '',
  12. 'token': ''
  13. }
  14. def _set_words(self, words):
  15. self._words = words
  16. def _get_token(self):
  17. response = self._session.get(URL, headers=HEADERS2)
  18. html = response.text
  19. li = re.search(r"<script>\s*window\[\'common\'\] = ([\s\S]*?)</script>", html)
  20. token = re.search(r"token: \'([a-zA-Z0-9]+)\',", li.group(1))
  21. self._data['token'] = token.group(1)
  22. def _get_sign(self):
  23. with open('baidufanyi.js') as f:
  24. js = f.read()
  25. sign = execjs.compile(js).call('e', self._words)
  26. self._data['sign'] = sign
  27. def _translate(self):
  28. self._get_token()
  29. self._get_sign()
  30. self._data['query'] = self._words
  31. # string = ''
  32. # cookie = self._session.cookies.get_dict()
  33. # for key in cookie:
  34. # string += key + '=' + cookie[key] + '; '
  35. # # response = self._session.post(REALTRANSLATE_API, data=self._data, headers=HEADERS)
  36. # HEADERS['Cookie'] = string + Cookie
  37. # print(HEADERS)
  38. response = self._session.post(TRANSLATE_API, data=self._data, headers=HEADERS2)
  39. Dict = json.loads(response.content.decode('utf-8'))
  40. print(Dict['trans_result']['data'][0]['dst'])
  41. if __name__ == "__main__":
  42. fanyi = fanYi()
  43. while True:
  44. fanyi._set_words(input())
  45. fanyi._translate()
  • baidufanyi.js

    var i = “320305.131321201”

    function a(r){ if(Array.isArray(r)){ for(var o=0,t=Array(r.length);o<r.length;o++)t[o]=r[o];
    return t}return Array.from(r)}

    function n(r,o){ for(var t=0;t=”a”?a.charCodeAt(0)-87:Number(a),a=”+”===o.charAt(t+1)?r>>>a:r<<a,r=”+”===o.charAt(t)?r+a&4294967295:r^a
    }return r}

    function e(r) {

    1. var o = r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
    2. if (null === o) {
    3. var t = r.length;
    4. t > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr( - 10, 10))
    5. } else {
    6. for (var e = r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C = 0, h = e.length, f = []; h > C; C++)"" !== e[C] && f.push.apply(f, a(e[C].split(""))),
    7. C !== h - 1 && f.push(o[C]);
    8. var g = f.length;
    9. g > 30 && (r = f.slice(0, 10).join("") + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join("") + f.slice( - 10).join(""))
    10. }
    11. var u = void 0,
    12. l = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);
    13. u = null !== i ? i: (i = window[l] || "") || "";
    14. for (var d = u.split("."), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) {
    15. var A = r.charCodeAt(v);
    16. 128 > A ? S[c++] = A: (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)), S[c++] = A >> 18 | 240, S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224, S[c++] = A >> 6 & 63 | 128), S[c++] = 63 & A | 128)
    17. }
    18. for (var p = m,
    19. F = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), D = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(51) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(98)) + ("" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(102)), b = 0; b < S.length; b++) p += S[b],
    20. p = n(p, F);
    21. return p = n(p, D),
    22. p ^= s,
    23. 0 > p && (p = (2147483647 & p) + 2147483648),
    24. p %= 1e6,
    25. p.toString() + "." + (p ^ m)
    26. }

有道翻译

单纯翻译:

  1. __author__ = 'hugowen'
  2. # -*- coding:utf-8 -*-
  3. ''' [33]python Web 框架:Tornado https://blog.csdn.net/xc_zhou/article/details/80637714 https://pypi.org/project/tornado/ '''
  4. from bs4 import BeautifulSoup
  5. import tornado.httpclient
  6. def is_chinese(uchar):
  7. if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
  8. return True
  9. else:
  10. return False
  11. if __name__ == "__main__":
  12. cli = tornado.httpclient.HTTPClient()
  13. link = 'http://dict.youdao.com/search?q='
  14. search = input('search: ')
  15. link += search
  16. # print(link)
  17. data = cli.fetch(link)
  18. body = data.body
  19. soup = BeautifulSoup(body)
  20. group = soup.find_all(class_ = 'trans-container')
  21. if is_chinese(search):
  22. content = group[0].find('ul').find('p')
  23. print(content.find_all('span')[0].get_text())
  24. for ele in content.find_all(class_ = 'contentTitle'):
  25. print(ele.find('a').get_text())
  26. else:
  27. content = group[0].find('ul').find_all('li')
  28. for ele in content:
  29. print(ele.get_text())

翻译并记录翻译日志: 输出到 words.md 文件中

  1. __author__ = 'hugowen'
  2. # -*- coding:utf-8 -*-
  3. ''' [33]python Web 框架:Tornado https://blog.csdn.net/xc_zhou/article/details/80637714 https://pypi.org/project/tornado/ '''
  4. from bs4 import BeautifulSoup
  5. import tornado.httpclient
  6. def is_chinese(uchar):
  7. if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
  8. return True
  9. else:
  10. return False
  11. def translate(search):
  12. cli = tornado.httpclient.HTTPClient()
  13. link = 'http://dict.youdao.com/search?q='
  14. link += search
  15. data = cli.fetch(link)
  16. body = data.body
  17. soup = BeautifulSoup(body, "html.parser")
  18. group = soup.find_all(class_ = 'trans-container')
  19. result = []
  20. if is_chinese(search):
  21. content = group[0].find('ul').find('p')
  22. print(content.find_all('span')[0].get_text())
  23. for ele in content.find_all(class_ = 'contentTitle'):
  24. result.append(ele.find('a').get_text())
  25. else:
  26. content = group[0].find('ul').find_all('li')
  27. for ele in content:
  28. result.append(ele.get_text())
  29. return result
  30. if __name__ == "__main__":
  31. while True:
  32. search = input('search: ')
  33. if search in ['Q', 'q']:
  34. break
  35. result = translate(search)
  36. with open('words.md', 'a') as f:
  37. f.write('### ▌' + search + '\n')
  38. for r in result:
  39. f.write('- [ ] ' + r +'\n')
  40. print('▌> ' + r)

发表评论

表情:
评论列表 (有 0 条评论,700人围观)

还没有评论,来说两句吧...

相关阅读

    相关 翻译调用

    [转载自][Link 1] 百度翻译开放平台:[点击打开链接][Link 2] 1. 定义类用于保存解析json得到的结果 ![复制代码][copycode.gif]