Python爬取有道詞典
-
準備
-
實驗原理
-
程式碼優化
-
GUI介面
-
整合程式碼
準備
我測試使用的Python版本為3.5。
實驗原理
使用urllib.request傳送請求
解析伺服器返回的資料並提取關鍵字
urllib.request.
urlopen
(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=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的資訊外,其他都可以刪除。
整合程式碼