1. 基本流程
1.1 發(fā)起請(qǐng)求
通過http
庫向目標(biāo)站點(diǎn)發(fā)起請(qǐng)求攒霹,即發(fā)送一個(gè)Request
涂臣,請(qǐng)求可以包含額外的信息,例如headers
等搞糕,等待服務(wù)器響應(yīng)。
1.2 獲取響應(yīng)內(nèi)容
如果服務(wù)器能正常響應(yīng)曼追,會(huì)得到一個(gè)Response
窍仰,Response
的內(nèi)容便是所要獲取的頁面內(nèi)容,類型可能有HTML
礼殊,Json
字符串驹吮,二進(jìn)制數(shù)據(jù)(例如圖片、視頻等)類型晶伦。
1.3 解析內(nèi)容
得到的內(nèi)容可能是HTML
碟狞,可以用正則表達(dá)式、網(wǎng)頁解析庫進(jìn)行解析婚陪。
也可能是Json
篷就,可以直接轉(zhuǎn)為Json
對(duì)象進(jìn)行解析。
可能是二進(jìn)制數(shù)據(jù)近忙,可以做保存或者進(jìn)一步的處理竭业。
1.4 保存數(shù)據(jù)
保存形式多種多樣,可以存為文本及舍,也可以保存至數(shù)據(jù)庫未辆,或者保存特定格式的文件。
2. Request
與Response
http
協(xié)議基于客戶機(jī)的請(qǐng)求與服務(wù)器的響應(yīng)锯玛。
2.1 Http Request
瀏覽器發(fā)送請(qǐng)求信息到網(wǎng)址指向的服務(wù)器
2.2 Http Response
服務(wù)器接收到瀏覽器發(fā)送的請(qǐng)求信息咐柜,根據(jù)發(fā)送消息的內(nèi)容,進(jìn)行相應(yīng)處理攘残,然后把消息返回瀏覽器
2.3 解析網(wǎng)頁
瀏覽器收到服務(wù)器的Response
信息后拙友,對(duì)信息進(jìn)行相應(yīng)處理,解析為網(wǎng)頁
3. Request
中包含的信息
3.1 請(qǐng)求方式
主要有GET
, POST
兩種類型歼郭,另外還有HEAD
, PUT
, DELET
, OPTION
等
GET
請(qǐng)求的參數(shù)都包含在請(qǐng)求的url
里面
POST
請(qǐng)求時(shí)遗契,參數(shù)會(huì)包含在額外的數(shù)據(jù)包內(nèi),不會(huì)顯示在url
里面病曾,相對(duì)安全
3.2 請(qǐng)求url
url
全稱叫統(tǒng)一資源定位符牍蜂,例如,一個(gè)網(wǎng)頁文檔泰涂、一張圖片鲫竞、一個(gè)視頻等都可以用url
來唯一確定
3.3 請(qǐng)求頭
請(qǐng)求頭包含請(qǐng)求時(shí)的頭部信息,例如User-Agent
, Host
, Cookies
等信息
3.4 請(qǐng)求體
請(qǐng)求時(shí)額外攜帶的數(shù)據(jù)逼蒙,例如表單提交時(shí)的表單數(shù)據(jù)
一般來說从绘,在進(jìn)行GET
請(qǐng)求時(shí),請(qǐng)求體不會(huì)攜帶內(nèi)容,而進(jìn)行POST
請(qǐng)求時(shí)會(huì)攜帶內(nèi)容
4. Response
中包含的內(nèi)容
4.1 響應(yīng)狀態(tài)
服務(wù)器的響應(yīng)狀態(tài)僵井,例如200
代表成功赁还,301
代表跳轉(zhuǎn),404
找不到頁面驹沿,502
服務(wù)器錯(cuò)誤
4.2 響應(yīng)頭
例如內(nèi)容類型艘策,內(nèi)容長(zhǎng)度,服務(wù)器信息渊季,設(shè)置Cookie
等等
4.3 響應(yīng)體
最主要的部分朋蔫,包含了請(qǐng)求資源的內(nèi)容,例如網(wǎng)頁HTML
却汉、圖片二進(jìn)制數(shù)據(jù)等等
5. 網(wǎng)頁解析
-
直接解析
對(duì)于簡(jiǎn)單的字符串的網(wǎng)頁驯妄,可以直接解析
Json
解析正則表達(dá)式
BeaufigulSoup
PyQuery
XPath