學習爬蟲的第46天,我知道了偽裝的原因,向免費吃飯又進了一步

一般來說,獲取數據使用 urllib庫獲取頁面。

獲取頁面數據的幾個知識點:

對每一個頁面,調用 askURL函數獲取頁面內容;

定義一個獲取頁面的函數askURL,傳入一個url函數,表示網址。

urllib.Request生成請求:rullib.urlopen發送請求獲取響應,read獲取頁面內容。

在訪問頁面時經常會出現錯誤,為了程序正常運行,要加入異常獲取try...excepy...語句

也就是說,想要快樂玩耍,必須要明白 urllib庫 如何使用。


get請求

新建個 py 文件,敲幾行代碼瞭解下urllib庫。

學習爬蟲的第46天,我知道了偽裝的原因,向免費吃飯又進了一步

這個的意思就是,通過 urlopen 方法打開相應網頁,並把網頁返回給定義變量。

讀取結果就是網頁的源代碼。

這裡切記要對獲取的網頁源碼進行 utf-8 解析。

話說,感覺這個跟之前學到的 requests 的作用差不多啊。

這種獲取網頁的方式叫做獲取 get 請求。

這個課程有個小缺點,就是因為是面向大學生的,所以之前他應該是有跟這幫孩子講過網頁的一些相關知識的,所以有時候涉及到網頁的一些內容,他會直接拿來就用。

有時候會讓我們這種小白一臉懵逼。

但是問題不大,畢竟作為大學老師,都知道大部分學生是啥水平,所以以前講過的內容再用的時候,也不敢用的太多,淺嘗輒止而已,最多就是用幾個概念罷了。

對我們來說,偶爾碰到幾個不懂或者沒聽過的詞,也不怕。

畢竟,每個宅男碰到問題,都有一個最忠誠的女朋友幫我們解決問題--度娘。

學習爬蟲的第46天,我知道了偽裝的原因,向免費吃飯又進了一步

post請求

另一個獲取網頁的方式叫做 post 請求, post方式就是訪問網址的時候可以給服務器發送一個表單,在裡面把用戶名、密碼加密。

即模擬用戶真實登錄時使用。

這裡為了方便,使用專門測試用的網址:httpbin.org

學習爬蟲的第46天,我知道了偽裝的原因,向免費吃飯又進了一步

這裡需要使用 urllib 的 parse 方法,將下面的 bytes 中的鍵值對進行解析。

使用 bytes 將數據變為字節文件進行封裝。

鍵值對中一般放入用戶名、密碼以及cookie信息。

學習爬蟲的第46天,我知道了偽裝的原因,向免費吃飯又進了一步

這裡有意思的是圖中的最後一行:"User-Agent": "Python-urllib/3.8"

也就是說,直接赤果果的告訴服務器:喂,老兄,哥是用Python訪問的,不是用瀏覽器訪問的,換句話說,我跟你一樣,都不是個人!

所以以前總聽人家說,爬蟲必須要偽裝巴拉巴拉什麼的,我估計應該主要原因就是在這裡。

你得讓服務器從你的訪問信息裡面讀出了,哦,這是通過瀏覽器訪問的,也就是說,是個活生生的人,所以,讓他進來吧。


超時處理

有時候網速可能不好,也有的時候對方發現我方是爬蟲,不想讓我方訪問。

這兩種情況都叫做超時。

網站或程序此時會卡死。

這裡使用 timeout 可以進行設定時間。

更重要的是,使用 try...excepy...語句 進行異常監測。

學習爬蟲的第46天,我知道了偽裝的原因,向免費吃飯又進了一步

也就是說,對於超時,要有一個計劃性的準備。

如果在一個指定的時間內(如3秒、5秒等),服務器還沒有反應,那就應該進行結束這次循環,或者不要爬取這個網頁的操作。


分享到:


相關文章: