天天看點

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