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

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

wKioL1aGL0rDEYp7AACLquuWChQ480.png

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

wKioL1aGL7Lh9xn-AAA7wZ7s-q8925.png

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


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"])