天天看点

Python实现在线翻译的程序

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

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

<a href="http://s3.51cto.com/wyfs02/M02/79/0B/wKioL1aGL0rDEYp7AACLquuWChQ480.png" target="_blank"></a>

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

<a href="http://s4.51cto.com/wyfs02/M02/79/0B/wKioL1aGL7Lh9xn-AAA7wZ7s-q8925.png" target="_blank"></a>

从这里能看出,我们上传的语句仅仅是“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

<code>import</code> <code>urllib.request</code>

<code>import</code> <code>urllib.parse</code>

<code>import</code> <code>json              </code>

<code>#启动模块,json模块是因为data里的doctype是json,如果不选择这个的话,输出的格式很难看#</code>

<code>content</code><code>=</code><code>input</code><code>(</code><code>"想要翻译的英文:"</code><code>)</code>

<code>url</code><code>=</code><code>"http://fanyi.youdao.com/translate?smartresult=dict&amp;smartresult=rule&amp;smartresult=ugc&amp;sessionFrom=http://www.youdao.com/"</code> 

<code>data</code><code>=</code><code>{}            </code><code>#建立一个空的字典,然后一项一项的把字典内容填满#</code>

<code>data[</code><code>"type"</code><code>]</code><code>=</code><code>"AUTO"</code>

<code>data[</code><code>"i"</code><code>]</code><code>=</code><code>content</code>

<code>data[</code><code>"doctype"</code><code>]</code><code>=</code><code>"json"</code>

<code>data[</code><code>"xmlVersion"</code><code>]</code><code>=</code><code>"1.8"</code>

<code>data[</code><code>"keyfrom"</code><code>]</code><code>=</code><code>"fanyi.web"</code>

<code>data[</code><code>"ue"</code><code>]</code><code>=</code><code>"UTF-8"</code>

<code>data[</code><code>"action"</code><code>]</code><code>=</code><code>"FY_BY_CLICKBUTTON"</code>

<code>data[</code><code>"typoResult"</code><code>]</code><code>=</code><code>"true"</code>

<code>data</code><code>=</code><code>urllib.parse.urlencode(data).encode(</code><code>"utf-8"</code><code>)   </code>

<code>#网站的编码是utf-8的模式,而我们传入的字典映射是默认python下的unicode模式,于是我们需要encode成utf-8,这样的data才是真正服务器可以识别的data#</code>

<code>response</code><code>=</code><code>urllib.request.urlopen(url,data)</code>

<code>#urlopen如果没有data那么它就是一个获取网页的命令,而有了data就是一个传送data到url的命令#</code>

<code>html</code><code>=</code><code>response.read().decode(</code><code>"utf-8"</code><code>)</code>

<code>#获得了服务器的应答之后,把服务器的utf-8的模式解码成python认可的unicode#</code>

<code>AAA</code><code>=</code><code>json.loads(html)</code>

<code>print</code><code>(</code><code>"翻译的结果是:"</code><code>+</code><code>AAA[</code><code>"translateResult"</code><code>][</code><code>0</code><code>][</code><code>0</code><code>][</code><code>"tgt"</code><code>])</code>

 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1730633