1. 程式人生 > >Python爬取有道詞典

Python爬取有道詞典

  1. 準備

  2. 實驗原理

  3. 程式碼優化

  4. GUI介面

  5. 整合程式碼  

準備

我測試使用的Python版本為3.5。

實驗原理

 

使用urllib.request傳送請求

解析伺服器返回的資料並提取關鍵字

 

 

urllib.request.urlopen(urldata=None, [timeout, ]*cafile=Nonecapath=Nonecadefault=Falsecontext=None
)

-         url:  需要開啟的網址

-         data:Post提交的資料

-         timeout:設定網站的訪問超時時間

直接用urllib.request模組的urlopen()獲取頁面,page的資料格式為bytes型別,需要decode()解碼,轉換成str型別。

 

 

1.首先開啟有道首頁,點選審查元素

 

 

 

2.點選翻譯,從元素中找到我們要查詢的結果

 

 

3.找到form data,模擬瀏覽器提交資料。

 

 

4.瞭解urllib

 

5.模擬客戶端向伺服器發起請求,取得伺服器返回的檔案並進行比對。

需要使用urllib.parse.urlencode將data資料轉換成標準格式

 

 

6.通過索引提取關鍵資料

我們雖然取得了資料,但是資料被封裝成json格式。Json簡介:Json,全名 JavaScript Object Notation,是一種輕量級的資料交換格式。Json最廣泛的應用是作為AJAX中web伺服器和客戶端的通訊的資料格式。現在也常用於http請求中,所以對json的各種學習,是自然而然的事情。這裡我們先通過json.loads()函式是將json格式資料轉換為字典。

 

 

程式碼優化 

1.修改user-agent模擬瀏覽器發出請求

 

 

2.使用代理ip模擬人工訪問

urllib2中通過ProxyHandler來設定使用代理伺服器

 

 

GUI介面

Tkinter: Tkinter 模組(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Macintosh 系統裡

3.簡化程式碼

data裡面的資料是不是都是必需的呢,有了這個疑問之後,小編立馬進行測試,結果發現除了提交內容和指定內容格式為json的資訊外,其他都可以刪除。

 

 

整合程式碼 

 

 

大功告成