Python爬取一個簡單網頁的HTML代碼


這幾天我初學Python的urllib庫,學學Python網絡爬蟲知識,結果學起來比我想象的難得多,比學習界面都難。


urllib是什么?

我們首先了解一下 Urllib 庫,它是 Python 內置的 HTTP 請求庫,也就是說我們不需要額外安裝即可使用,它包含四個模塊:
  • 第一個模塊 request,它是最基本的 HTTP 請求模塊,我們可以用它來模擬發送一請求,就像在瀏覽器里輸入網址然后敲擊回車一樣,只需要給庫方法傳入 URL 還有額外的參數,就可以模擬實現這個過程了。
  • 第二個 error 模塊即異常處理模塊,如果出現請求錯誤,我們可以捕獲這些異常,然后進行重試或其他操作保證程序不會意外終止。
  • 第三個 parse 模塊是一個工具模塊,提供了許多 URL 處理方法,比如拆分、解析、合並等等的方法。
    第四個模塊是 robotparser,主要是用來識別網站的 robots.txt 文件,然后判斷哪些網站可以爬,哪些網站不可以爬的,其實用的比較少。

在這里重點對前三個模塊進行下講解。

作者:NewForMe
鏈接:https://www.jianshu.com/p/63dad93d7000
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


現在我來說一個怎么使用urllib庫爬取一個網頁的HTML代碼,可以輸出,也可以保存進一個文件

urllib.request 模塊提供了最基本的構造 HTTP 請求的方法,利用它可以模擬瀏覽器的一個請求發起過程,同時它還帶有處理authenticaton(授權驗證),redirections(重定向),cookies(瀏覽器Cookies)以及其它內容。

我們來感受一下它的強大之處,以 Python官網為例,我們來把這個網頁抓下來:

import urllib.request

response = urllib.request.urlopen('https://www.python.org')
print(response.read().decode('utf-8'))

運行結果

這是一個截圖,實際上很多行都輸出在了IDLE上(我直接用的解釋器)

接下來我們看下它返回的到底是什么,利用 type() 方法輸出 Response 的類型。

import urllib.request

response = urllib.request.urlopen('https://www.python.org')
print(type(response))

輸出結果:

<class 'http.client.HTTPResponse'>

通過輸出結果可以發現它是一個 HTTPResposne 類型的對象,它主要包含的方法有 read()、readinto()、getheader(name)、getheaders()、fileno() 等方法和 msg、version、status、reason、debuglevel、closed 等屬性。
得到這個對象之后,我們把它賦值為 response 變量,然后就可以調用這些方法和屬性,得到返回結果的一系列信息了。

例如調用 read() 方法可以得到返回的網頁內容,調用 status 屬性就可以得到返回結果的狀態碼,如 200 代表請求成功,404 代表網頁未找到等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM