Python爬蟲實(shí)戰(zhàn)入門二:從一個(gè)簡(jiǎn)單的HTTP請(qǐng)求開始

一、為什么從HTTP請(qǐng)求開始

無論我們通過瀏覽器打開網(wǎng)站、訪問網(wǎng)頁,還是通過腳本對(duì)URL網(wǎng)址進(jìn)行訪問,本質(zhì)上都是對(duì)HTTP服務(wù)器的請(qǐng)求,瀏覽器上所呈現(xiàn)的、控制臺(tái)所顯示的都是HTTP服務(wù)器對(duì)我們請(qǐng)求的響應(yīng)。

以打開網(wǎng)站為例,瀏覽器上呈現(xiàn)的是下圖:

我們按F12打開網(wǎng)頁調(diào)試工具,選擇“network”選項(xiàng)卡,可以看到我們對(duì)zmister.com的請(qǐng)求,以及zmister.com給我們的響應(yīng):

請(qǐng)求與響應(yīng)

響應(yīng)消息主體

二、基本的HTTP概念

通常HTTP消息包括客戶機(jī)向服務(wù)器的請(qǐng)求消息和服務(wù)器向客戶機(jī)的響應(yīng)消息。這兩種類型的消息由一個(gè)起始行,一個(gè)或者多個(gè)頭域,一個(gè)指示頭域結(jié)束的空行和可選的消息體組成。

我們看上面對(duì)zmister.com的HTTP示例來說明:

1、HTTP概覽

Request URl:表示請(qǐng)求的URL

Request Method:表示請(qǐng)求的方法,此處為GET。除此之外,HTTP的請(qǐng)求方法還有OPTION、HEAD、POST、DELETE、PUT等,而最常用的就是GET和POST方法:

POST:

向指定資源提交數(shù)據(jù),請(qǐng)求服務(wù)器進(jìn)行處理(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求本文中。這個(gè)請(qǐng)求可能會(huì)創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有。

GET:

向指定的資源發(fā)出“顯示”請(qǐng)求。

Status Code:顯示HTTP請(qǐng)求和狀態(tài)碼,表示HTTP請(qǐng)求的狀態(tài),此處為200,表示請(qǐng)求已被服務(wù)器接收、理解和處理;

狀態(tài)代碼的第一個(gè)數(shù)字代表當(dāng)前響應(yīng)的類型,HTTP協(xié)議中有以下幾種響應(yīng)類型:

1xx消息——請(qǐng)求已被服務(wù)器接收,繼續(xù)處理

2xx成功——請(qǐng)求已成功被服務(wù)器接收、理解、并接受

3xx重定向——需要后續(xù)操作才能完成這一請(qǐng)求

4xx請(qǐng)求錯(cuò)誤——請(qǐng)求含有詞法錯(cuò)誤或者無法被執(zhí)行

5xx服務(wù)器錯(cuò)誤——服務(wù)器在處理某個(gè)正確請(qǐng)求時(shí)發(fā)生錯(cuò)誤

2、HTTP請(qǐng)求頭

Accept:表示請(qǐng)求的資源類型;

Cookie:為了辨別用戶身份、進(jìn)行 session 跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù);

User-Agent:表示瀏覽器標(biāo)識(shí);

Accept-Language:表示瀏覽器所支持的語言類型;

Accept-Charset:告訴 Web 服務(wù)器,瀏覽器可以接受哪些字符編碼;

Accept:表示瀏覽器支持的 MIME 類型;

Accept-Encoding:表示瀏覽器有能力解碼的編碼類型;

Connection:表示客戶端與服務(wù)連接類型;

基本的HTTP介紹就結(jié)束了,如果需要更加詳細(xì)的HTTP知識(shí),推薦一本HTTP入門書《圖解HTTP》

下面,我們用Python來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP請(qǐng)求

三、用Python進(jìn)行HTTP請(qǐng)求

在學(xué)習(xí)中有迷茫不知如何學(xué)習(xí)的朋友小編推薦一個(gè)學(xué)Python的學(xué)習(xí)裙[663033228]無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

這里繼續(xù)用網(wǎng)站http://zmmister.com 作示例

打開代碼編輯器,輸入以下代碼:

#coding:utf-8

import requests

url = "http://bxu2713810459.my3w.com"

data = requests.get(url)

這樣,就完成了一個(gè)簡(jiǎn)單的對(duì)zmister.com的HTTP請(qǐng)求。

我們看看這個(gè)請(qǐng)求的狀態(tài)碼:

data.status_code

結(jié)果返回的是:200

再看看響應(yīng)的主體消息:

data.content

結(jié)果返回了一大串編碼了的HTML源碼,這些HTML源碼未經(jīng)解碼和解析,看上起很是凌亂

對(duì)這些凌亂的html源碼進(jìn)行處理,就需要使用到BeautifulSoup模塊了,下一章咱們繼續(xù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容