首页 璞玉游戏介绍 正文

有道在线翻译准不准?亲测对比告诉你结果!

今天心血来潮,想搞个小工具,方便平时翻译一些英文文档。本来想直接调用某些大厂的翻译接口,但想想还是算,自己动手,丰衣足食嘛于是我就盯上有道在线翻译。 第一步,当然是先打开有道在线翻译的网页。 然后,我习惯性地打开开发者工具(按F12就行),准备看看它的网络请求是怎么搞的。 ...

今天心血来潮,想搞个小工具,方便平时翻译一些英文文档。本来想直接调用某些大厂的翻译接口,但想想还是算,自己动手,丰衣足食嘛于是我就盯上有道在线翻译。

第一步,当然是先打开有道在线翻译的网页。

然后,我习惯性地打开开发者工具(按F12就行),准备看看它的网络请求是怎么搞的。

第二步,在Network找数据包。

我随便输入一个单词 "test",然后就在一堆请求里找找,终于找到一个看起来像是发送翻译请求的包。

仔细一看,这个请求的URL 挺长的,还带一堆参数,看起来有点复杂,但是我发现几次请求参数都没啥变化。

第三步,开始写代码。

我用的是 Python,毕竟这玩意儿写起来快。先导入 requests 库,用来发送网络请求。

import requests

然后,我把刚才找到的那个请求 URL 复制过来,再把请求头(Headers)也复制过来,免得被网站识别出来我是个爬虫。

构造请求数据(data)。

我把那些参数都整理成一个字典,像这样:

  • 'i': 要翻译的词
  • 'from': 'AUTO'
  • 'to': 'AUTO'
  • 'smartresult': 'dict'
  • 'client': 'fanyideskweb'
  • 'salt': 一串数字
  • 'sign': 一串字母和数字的组合
  • 'lts': 一串数字
  • 'bv': 一串字母和数字的组合
  • 'doctype': 'json'
  • 'version': '2.1'
  • 'keyfrom': '*'
  • 'action': 'FY_BY_REALTlME'

这些参数是啥意思?不用管它,反正每次请求都一样,直接复制过来用就行。

第四步,发送请求,获取结果。

用 *() 方法发送请求,把 URL、Headers 和 data 都传进去。


response = *(url, headers=headers, data=data)

然后,用 *() 方法把返回的结果转换成 Python 字典。

第五步,提取翻译结果。

我发现翻译结果就藏在这个字典里的一个叫做 'translateResult' 的键里面,然后一层一层剥开,拿到翻译结果的文本

result = *()['translateResult'][0][0]['tgt']

print(result)

我把这些代码整理成一个函数。

以后想翻译什么,直接调用这个函数就行,方便得很。


def youdao_translate(word):

# 请求URL

url = "刚才复制的"

# 请求头

headers = {

"刚才复制的"

# 请求数据

data = {

"刚才复制的"

# 发送请求

response = *(url, headers=headers, data=data)

# 提取翻译结果

result = *()['translateResult'][0][0]['tgt']

return result

搞定!以后再也不用打开网页翻译,直接在 Python 里就能搞定,省时省力,美滋滋。