這篇文章主要介紹“如何使用Requests模塊抓取網(wǎng)頁”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“如何使用Requests模塊抓取網(wǎng)頁”文章能幫助大家解決問題。
諸城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
爬取網(wǎng)頁其實(shí)就是通過URL獲取網(wǎng)頁信息,網(wǎng)頁信息的實(shí)質(zhì)是一段添加了JavaScript和CSS的HTML代碼。Python提供了一個(gè)抓取網(wǎng)頁信息的第三方模塊requests,requests模塊自稱“HTTP for Humans”,直譯過來的意思是專門為人類而設(shè)計(jì)的HTTP模塊,該模塊支持發(fā)送請(qǐng)求,也支持獲取響應(yīng)。
requests模塊提供了很多發(fā)送HTTP請(qǐng)求的函數(shù),常用的請(qǐng)求函數(shù)具體如表10-1所示。
表10-1 requests模塊的請(qǐng)求函數(shù)
requests模塊提供的Response 類對(duì)象用于動(dòng)態(tài)地響應(yīng)客戶端的請(qǐng)求,控制發(fā)送給用戶的信息,并且將動(dòng)態(tài)地生成響應(yīng),包括狀態(tài)碼、網(wǎng)頁的內(nèi)容等。接下來通過一張表來列舉Response類可以獲取到的信息,如表10-2所示。
表10-2 Response 類的常用屬性
接下來通過一個(gè)案例來演示如何使用requests模塊抓取百度網(wǎng)頁,具體代碼如下:
# 01 requests baidu import requests base_url = 'http://www.baidu.com' #發(fā)送GET請(qǐng)求 res = requests.get (base_url) print("響應(yīng)狀態(tài)碼:{}".format(res.status_code))#獲取響應(yīng)狀態(tài)碼 print("編碼方式:{}".format(res.encoding))#獲取響應(yīng)內(nèi)容的編碼方式 res.encoding = 'utf-8'#更新響應(yīng)內(nèi)容的編碼方式為UIE-8 print("網(wǎng)頁源代碼:n{}".format(res.text)) #獲取響應(yīng)內(nèi)容
以上代碼中,第2行使用import導(dǎo)入了requests模塊;第3~4行代碼根據(jù)URL向服務(wù)器發(fā)送了一個(gè)GET請(qǐng)求,并使用變量res接收服務(wù)器返回的響應(yīng)內(nèi)容;第5~6行代碼打印了響應(yīng)內(nèi)容的狀態(tài)碼和編碼方式;第7行將響應(yīng)內(nèi)容的編碼方式更改為“utf-8”;第8行代碼打印了響應(yīng)內(nèi)容。運(yùn)行程序,程序的輸出結(jié)果如下:
響應(yīng)狀態(tài)碼:200 編碼方式:ISO-8859-1 網(wǎng)頁源代碼: 百度一下,你就知道…省略N行…
值得一提的是,使用requests模塊爬取網(wǎng)頁時(shí),可能會(huì)因?yàn)闆]有連接網(wǎng)絡(luò)、服務(wù)器連接失敗等原因?qū)е庐a(chǎn)生各種異常,最常見的兩個(gè)異常是URLError和HTTPError,這些網(wǎng)絡(luò)異??梢允褂?try…except 語句捕獲與處理。
關(guān)于“如何使用Requests模塊抓取網(wǎng)頁”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。