【python】第一個爬蟲:用requests庫爬取網頁內容


requests庫介紹

requests 庫是一個簡潔且簡單的處理HTTP請求的第三方庫。

requests的最大優點是程序編寫過程更接近正常URL 訪問過程。

 

 get()是獲取網頁最常用的方式,在調用requests.get()函數后,返回的網頁內容會保存為一個Response 對象,其中,get()函數的參數url 必須鏈接采用HTTP 或HTTPS方式訪問。和瀏覽器的交互過程一樣,requests.get()代表請求過程,它返回的Response 對象代表響應。返回內容作為一個對象更便於操作,Response 對象的屬性如下表所示,需要采用<a>.<b>形式使用。

status_code 屬性返回請求HTTP 后的狀態,在處理數據之前要先判斷狀態情況,如果請求未被響應,需要終止內容處理。 text 屬性是請求的頁面內容,以字符串形式展示。encoding 屬性非常重要,它給出了返回頁面內容的編碼方式,可以通過對encoding 屬性賦值更改編碼方式,以便於處理中文字符 content 屬性是頁面內容的二進制形式。

json()方法能夠在HTTP 響應內容中解析存在的JSON 數據,這將帶來解析HTTP的便利。

 

raise_for_status()方法能在非成功響應后產生異常,即只要返回的請求狀態status_code 不是200,這個方法會產生一個異常,用於try…except 語句。使用異常處理語句可以避免設置一堆復雜的if 語句,只需要在收到響應調用這個方法,就可以避開狀態字200 以外的各種意外情況。

requests 會產生幾種常用異常。當遇到網絡問題時,如:DNS 查詢失敗、拒絕連接等,requests 會拋出ConnectionError 異常;遇到無效HTTP 響應時,requests 則會拋出HTTPError 異常;若請求url 超時,則拋出Timeout 異常;若請求超過了設定的最大重定向次數,則會拋出一個TooManyRedirects 異常。

用requests庫訪問百度網站20次,代碼如下:

1 import requests
2 for i in range (20):
3     print("",i+1,"次訪問")
4     r=requests.get("http://www.baidu.com")
5     r.encoding='utf-8'
6     print("返回狀態:",r.status_code)
7     print(r.text)
8     print("text屬性長度:",len(r.text))
9     print("content屬性長度:",len(r.content))

效果圖:

                


免責聲明!

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



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