Python实现在线翻译的程序

这个程序是使用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"])


你可能感兴趣的:(python,import,encode)