一佃扼、為什么從HTTP請求開始
無論我們通過瀏覽器打開網(wǎng)站激涤、訪問網(wǎng)頁衷蜓,還是通過腳本對URL網(wǎng)址進行訪問累提,本質上都是對HTTP服務器的請求,瀏覽器上所呈現(xiàn)的磁浇、控制臺所顯示的都是HTTP服務器對我們請求的響應斋陪。
以打開網(wǎng)站為例,瀏覽器上呈現(xiàn)的是下圖:
我們按F12打開網(wǎng)頁調(diào)試工具置吓,選擇“network”選項卡无虚,可以看到我們對zmister.com的請求,以及zmister.com給我們的響應:
請求與響應
響應消息主體
二衍锚、基本的HTTP概念
通常HTTP消息包括客戶機向服務器的請求消息和服務器向客戶機的響應消息友题。這兩種類型的消息由一個起始行,一個或者多個頭域戴质,一個指示頭域結束的空行和可選的消息體組成度宦。
我們看上面對zmister.com的HTTP示例來說明:
1、HTTP概覽
Request URl:表示請求的URL
Request Method:表示請求的方法置森,此處為GET斗埂。除此之外,HTTP的請求方法還有OPTION凫海、HEAD呛凶、POST、DELETE行贪、PUT等漾稀,而最常用的就是GET和POST方法:
POST:
向指定資源提交數(shù)據(jù),請求服務器進行處理(例如提交表單或者上傳文件)建瘫。數(shù)據(jù)被包含在請求本文中崭捍。這個請求可能會創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有啰脚。
GET:
向指定的資源發(fā)出“顯示”請求殷蛇。
Status Code:顯示HTTP請求和狀態(tài)碼实夹,表示HTTP請求的狀態(tài),此處為200粒梦,表示請求已被服務器接收亮航、理解和處理;
狀態(tài)代碼的第一個數(shù)字代表當前響應的類型匀们,HTTP協(xié)議中有以下幾種響應類型:
1xx消息——請求已被服務器接收缴淋,繼續(xù)處理
2xx成功——請求已成功被服務器接收、理解泄朴、并接受
3xx重定向——需要后續(xù)操作才能完成這一請求
4xx請求錯誤——請求含有詞法錯誤或者無法被執(zhí)行
5xx服務器錯誤——服務器在處理某個正確請求時發(fā)生錯誤
2重抖、HTTP請求頭
Accept:表示請求的資源類型;
Cookie:為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數(shù)據(jù);
User-Agent:表示瀏覽器標識;
Accept-Language:表示瀏覽器所支持的語言類型祖灰;
Accept-Charset:告訴 Web 服務器钟沛,瀏覽器可以接受哪些字符編碼;
Accept:表示瀏覽器支持的 MIME 類型夫植;
Accept-Encoding:表示瀏覽器有能力解碼的編碼類型讹剔;
Connection:表示客戶端與服務連接類型;
基本的HTTP介紹就結束了详民,如果需要更加詳細的HTTP知識延欠,推薦一本HTTP入門書《圖解HTTP》
下面,我們用Python來實現(xiàn)一個簡單的HTTP請求
三沈跨、用Python進行HTTP請求
在學習中有迷茫不知如何學習的朋友小編推薦一個學Python的學習裙[663033228]無論你是大牛還是小白由捎,是想轉行還是想入行都可以來了解一起進步一起學習!裙內(nèi)有開發(fā)工具饿凛,很多干貨和技術資料分享狞玛!
這里繼續(xù)用網(wǎng)站http://zmmister.com 作示例
打開代碼編輯器,輸入以下代碼:
#coding:utf-8
import requests
url = "http://bxu2713810459.my3w.com"
data = requests.get(url)
這樣涧窒,就完成了一個簡單的對zmister.com的HTTP請求心肪。
我們看看這個請求的狀態(tài)碼:
data.status_code
結果返回的是:200
再看看響應的主體消息:
data.content
結果返回了一大串編碼了的HTML源碼,這些HTML源碼未經(jīng)解碼和解析纠吴,看上起很是凌亂
對這些凌亂的html源碼進行處理硬鞍,就需要使用到BeautifulSoup模塊了,下一章咱們繼續(xù)戴已。