Python爬蟲實踐筆記(三)

網頁式登錄的無線網絡重連–本質

註釋:事實上這個程序就是在連接了某個無線網之後,登錄該無線網指定的頁面,然後就可以正常上網了。跟爬蟲的連接和登錄網頁的本質是一樣的,只是需要分析一下請求和響應數據,以至於能夠實現重連。


第一步:分析登錄請求

(1)先使用正常的方法登錄網頁,然後使用瀏覽器的開發者工具查看一下請求包是需要哪些參數data以及頭文件信息headers的。
(2)事實上,如果我們登錄的不是網頁,也是某個客戶端程序,我們只需要使用抓包工具找到客戶端登錄的那個請求包,找到需要發送的信息,然後就可以用python模擬登錄了。


第二步:模擬登錄-請求處理

(1)上一步我們知道了登錄需要的信息,這裏我們就可以生成請求包了。
(2)若需要知道客戶端的IP地址,我們可以使用Python的socket模塊的gethostbyname(hostname)和gethostbyname_ex(hostname)方法來獲取客戶端的IP地址。這是因爲要連上了無線網絡,才能使用網頁登錄,服務器會根據登錄主機的ip地址來判斷主機是否已經連上了無線網絡。
(3)構建好請求包之後我們就可以使用urlopen發送請求了。


第三步:模擬登錄-響應處理

(1)發送請求後會收到響應包,不同的情況下可能受到不同的響應信息,例如登錄賬號不正確,密碼不正確,重複登錄等,因此我們必須對響應信息做相應的處理。
(2)對於響應信息解碼獲取到對應的文本信息後,使用字符串匹配和正則表達式獲取表示不同狀態的信息,根據這些信息做對應的處理。


第四步:檢查連接是否成功

(1)由於不知道網絡什麼時候會掉線,因此我們需要一個方法來查看網絡還是否處於連接狀態。
(2)使用的方法是用python模擬控制檯的ping操作,根據返回值來判斷是否連上網絡。這裏用到了python的os和subprocess模塊來模擬控制檯ping某個網頁,如百度,來確定網絡是否還能用。


第五步:網絡重連

(1)當使用第四步時發現網絡已經掉線了,我們使用前三步封裝好的方法來重新登錄即可。


學習心得:
(1)從這次實踐我發現,python其實可以模擬連接、登錄所有的網頁,甚至是客戶端,前提是你要知道在連接和登錄的時候你要給網頁或者客戶端發送什麼樣的信息,然後構建好對應的請求包再發送過去就可以了。


具體的方法請看:靜覓 » Python爬蟲實戰三之實現山東大學無線網絡掉線自動重連

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章