一、為什么從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ù)。