博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 使用有道翻译
阅读量:6269 次
发布时间:2019-06-22

本文共 3269 字,大约阅读时间需要 10 分钟。

最近想将一些句子翻译成不同的语言,最开始想使用Python向有道发送请求包的方式进行翻译。

这种翻译方式可行,不过只能翻译默认语言,不能选定语言,于是我研究了一下如何构造请求参数,其中有两个参数最复杂(salt 和 sign),网络上有很多人发现如何破解,不过我尝试过后发现并不能用,有道已经改版了(2018年6月改版),使用了自己定义的md5加密方式来构建sign参数。

define("newweb/common/service", ["./utils", "./md5", "./jquery-1.7"],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", ["./jquery-1.7"],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 = 2147483648 & e,        o = 2147483648 & t,        n = 1073741824 & e,        r = 1073741824 & t,        a = (1073741823 & e) + (1073741823 & t),        n & r ? 2147483648 ^ a ^ i ^ o: n | r ? 1073741824 & a ? 3221225472 ^ 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 % 64) / 64 + 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\tools\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)

 

转载于:https://www.cnblogs.com/bradwarden/p/9610893.html

你可能感兴趣的文章
View学习(一)-DecorView,measureSpec与LayoutParams
查看>>
色彩力量!21款你应该知道的优秀品牌设计
查看>>
SDUT 3503 有两个正整数,求N!的K进制的位数
查看>>
【.Net】C# 根据绝对路径获取 带后缀文件名、后缀名、文件名、不带文件名的文件路径...
查看>>
Redis常用命令速查 <第二篇>
查看>>
CSS规范
查看>>
使用FastDateFormat来代替JDK自带的DateFormat
查看>>
Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
查看>>
Android源代码解析之(三)--&gt;异步任务AsyncTask
查看>>
(zhuan) 自然语言处理中的Attention Model:是什么及为什么
查看>>
C#中使用RabbitMQ收发队列消息
查看>>
Hadoop1.2.1 全然分布式集群搭建实操笔记
查看>>
第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求...
查看>>
MVC总结--MVC简单介绍以及和WebForm差别
查看>>
tiny4412 裸机程序 五、控制icache【转】
查看>>
VB.NET多线程入门
查看>>
国外物联网平台初探(二) ——微软Azure IoT
查看>>
findlibrary returned null产生的联想,Android ndk开发打包时我们应该怎样注意平台的兼容(x86,arm,arm-v7a)...
查看>>
Android事件分发机制源代码分析
查看>>
《设计模式》结构型模式
查看>>