这个程序是使用python直接连接到“有道词典”的翻译页,然后实现对应翻译。

在有道字典的翻译页里,空白地方右键选择检查元素,然后输入一些可以翻译的语句,同时按下“翻译”的按键,观察network栏里的变化,发现有post有get,其中post主要是“发送到服务器”的数据,而get是“电脑接收”的数据。

wKioL1aGL0rDEYp7AACLquuWChQ480.png

从headers里获得了真正的翻译网址,以及远程地址。然后再往下看,我们能看见data,这个就是我们传上去的内容。

wKioL1aGL7Lh9xn-AAA7wZ7s-q8925.png

从这里能看出,我们上传的语句仅仅是“happy new year”,但是在服务器端却是这样的显示,所以在python里,我们也要按照这样的规格给服务器发送信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import  urllib.request
import  urllib.parse
import  json              
#启动模块,json模块是因为data里的doctype是json,如果不选择这个的话,输出的格式很难看#
content = input ( "想要翻译的英文:" )
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/" 
data = {}             #建立一个空的字典,然后一项一项的把字典内容填满#
data[ "type" ] = "AUTO"
data[ "i" ] = content
data[ "doctype" ] = "json"
data[ "xmlVersion" ] = "1.8"
data[ "keyfrom" ] = "fanyi.web"
data[ "ue" ] = "UTF-8"
data[ "action" ] = "FY_BY_CLICKBUTTON"
data[ "typoResult" ] = "true"
data = urllib.parse.urlencode(data).encode( "utf-8" )   
#网站的编码是utf-8的模式,而我们传入的字典映射是默认python下的unicode模式,于是我们需要encode成utf-8,这样的data才是真正服务器可以识别的data#
response = urllib.request.urlopen(url,data)
#urlopen如果没有data那么它就是一个获取网页的命令,而有了data就是一个传送data到url的命令#
html = response.read().decode( "utf-8" )
#获得了服务器的应答之后,把服务器的utf-8的模式解码成python认可的unicode#
AAA = json.loads(html)
print ( "翻译的结果是:" + AAA[ "translateResult" ][ 0 ][ 0 ][ "tgt" ])