Python使⽤有道翻译
这种翻译⽅式可⾏,不过只能翻译默认语⾔,不能选定语⾔,于是我研究了⼀下如何构造请求参数,其中有两个参数最复杂(salt 和 sign),⽹络上有很多⼈发现如何破解,不过我尝试过后发现并不能⽤,有道已经改版了(2018年6⽉改版),使⽤了⾃⼰定义的md5加密⽅式来构建sign参数。define(\"newweb/common/service\],function(e, t) {
var n = e(\"./jquery-1.7\"); e(\"./utils\"); e(\"./md5\"); var r = function(e) {
var t = \"\" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)); return { salt: t,
sign: n.md5(\"fanyideskweb\" + e + t + \"6x(ZHw]mwzX#u0V7@yfwK\")#e 为需要翻译的⽂本, t为时间戳 } };
define(\"newweb/common/md5\],function(e, t) {
var n = function(e, t) { return e << t | e >>> 32 - t },
r = function(e, t) { var n, r, i, o, a;
return i = 21474838 & e, o = 21474838 & t, n = 1073741824 & e, r = 1073741824 & t,
a = (1073741823 & e) + (1073741823 & t),
n & r ? 21474838 ^ a ^ i ^ o: n | r ? 1073741824 & a ? 32212272 ^ a ^ i ^ o: 1073741824 ^ a ^ i ^ o: a ^ i ^ o },
i = function(e, t, n) { return e & t | ~e & n },
o = function(e, t, n) { return e & n | t & ~n },
a = function(e, t, n) { return e ^ t ^ n },
s = function(e, t, n) { return t ^ (e | ~n) },
l = function(e, t, o, a, s, l, c) { return e = r(e, r(r(i(t, o, a), s), c)), r(n(e, l), t) },
c = function(e, t, i, a, s, l, c) { return e = r(e, r(r(o(t, i, a), s), c)), r(n(e, l), t) },
u = function(e, t, i, o, s, l, c) { return e = r(e, r(r(a(t, i, o), s), c)), r(n(e, l), t) },
f = function(e, t, i, o, a, l, c) { return e = r(e, r(r(s(t, i, o), a), c)), r(n(e, l), t) },
d = function(e) {
for (var t, n = e.length, r = n + 8,
i = 16 * ((r - r % ) / + 1), o = Array(i - 1), a = 0, s = 0; s < n;) a = s % 4 * 8, o[t = (s - s % 4) / 4] = o[t] | e.charCodeAt(s) << a, s++;
return t = (s - s % 4) / 4, a = s % 4 * 8, o[t] = o[t] | 128 << a, o[i - 2] = n << 3, o[i - 1] = n >>> 29, o },View Code
当使⽤Python中md5加密⽅法,虽然与有道得到的参数形式很像,但是始终翻译结果为⼀群问好。于是使⽤了下⾯⽅法,python + selenium,总于可以得到翻译结果。上代码:def youdao_trans(trans_sentences):
driver_path = r\"E:\\python\ools\\selenuimDirivers\\chromedriver_win32_2.40\\chromedriver.exe\" chrome = webdriver.Chrome(driver_path) chrome.get(\"http://fanyi.youdao.com/\") for key in trans_sentences: try:
script = \"lans = document.getElementById('languageSelect');lans.childNodes[7].firstElementChild.click()\" print(\"translate from:\",key)
chrome.execute_script(script)#这⾥使⽤javascript获取翻译语⾔,注意lans.childNodes[index],index需为奇数,⼤家在浏览器⾥运⾏便可知道原因。 inputOriginal = chrome.find_element_by_id('inputOriginal') inputOriginal.send_keys(key) chrome.implicitly_wait(1)
result = chrome.find_element_by_xpath('//div[@id=\"transTarget\"]/p/span') yield result.text chrome.refresh() except Exception as e: print(e)
translate_list = ['你好','如何使⽤Python编程','今天天⽓怎么样'] result = youdao_trans(translate_list) for r in result:
print(\"translate to:\", r)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务