python網(wǎng)絡(luò)爬蟲—爬取網(wǎng)頁(yè)的通用代碼框架及HTTP協(xié)議【2】

?-Modest_Proud-

一、爬取網(wǎng)頁(yè)的通用代碼框架

首先,我們使用Requests庫(kù)進(jìn)行網(wǎng)頁(yè)訪問的時(shí)候,經(jīng)常用get(),獲得url的相關(guān)內(nèi)容。

由于網(wǎng)絡(luò)連接是有風(fēng)險(xiǎn)的,所以異常處理語句很重要。

理解爬取網(wǎng)頁(yè)的通用代碼框架

import requests ?##加載Requests庫(kù)

def getHTMLText(url):

##定義getHTMLTexl函數(shù)

try:

r=requests.get(url,timeout=30)

##設(shè)定get函數(shù)參數(shù),超時(shí)限制30s

r.raise_for_status()

##如果狀態(tài)不是200,引發(fā)HTMLError異常

r.encoding="utf-8"

##更改編碼為utf-8格式

return r.text

##返回網(wǎng)頁(yè)文本內(nèi)容

except:

return "產(chǎn)生異常"

##返回異常提示

if __name__=="__main__":

##運(yùn)行模塊

url="http://www.baidu.com"

##給url賦值

print(getHTMLText(url))

##打印函數(shù)內(nèi)容

輸出結(jié)果如下圖

如果我們將url=“http://www.baidu.com"改成url="http:www.baidu.com" 會(huì)出現(xiàn)什么情況?

二、理解HTTP協(xié)議

HTTP(超文本傳輸協(xié)議)是一個(gè)基于請(qǐng)求與響應(yīng)模式的、無狀態(tài)的、應(yīng)用層的協(xié)議,常基于TCP的連接方式,HTTP1.1版本中給出一種持續(xù)連接的機(jī)制,絕大多數(shù)的Web開發(fā),都是構(gòu)建在HTTP協(xié)議之上的Web應(yīng)用。

URL格式:http://host[:port][path]

host:合法的Internet主機(jī)域名或IP地址

port:端口好,缺省端口為80

path:請(qǐng)求資源的路徑

HTTP URL 實(shí)例:

http://www.baidu.com

http://120.76.26.60:8188/xcb/login.jsp

HTTP URL 理解:

URL是通過HTTP協(xié)議存取資源的Internet路徑,一個(gè)URL對(duì)應(yīng)一個(gè)數(shù)據(jù)資源。

HTTP協(xié)議對(duì)資源的操作

備注:PUT和PATCH同樣是更新URL位置的資源,區(qū)別在于:

PUT提交更新全部位置的資源請(qǐng)求,PATCH提交局部更新請(qǐng)求

例:有A、B、C,我們現(xiàn)在需要把A改成G

PUT:請(qǐng)求將A、B、C用G、B、C替換

PATCH:請(qǐng)求G替換位置為A

若用PUT提交PATCH,則會(huì)出現(xiàn)A、B、C—>G

HTTP協(xié)議與Requests庫(kù)方法功能對(duì)比

Requests庫(kù)的HEAD()方法

Requests庫(kù)的POST()方法

向URL POST一個(gè)字典,自動(dòng)編碼為from(表單)

向URL POST一個(gè)字符串,自動(dòng)編碼為data

關(guān)注微信公眾號(hào)獲得最新內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容