- Python全棧開發:數據分析
- 夏正東編著
- 1802字
- 2023-07-17 20:52:41
1.2.2 HTTP請求和響應
1.HTTP請求
HTTP請求是由客戶端向服務器發送的相關數據,其可以分為4部分內容,即請求方法(Request Method)、請求網址(Request URL)、請求頭(Request Headers)和請求體(Request Body)。
1)請求方法
當在瀏覽器中輸入URL并按Enter鍵時,便會以某種請求方法發起一個HTTP請求,常用的請求方法如表1-1所示。
表1-1 常用的請求方法

2)請求網址
請求網址,即統一資源定位符URL,通過請求網址可以唯一確定所請求的資源。
URL通常由4部分組成,即協議、主機、端口和路徑,其一般的語法格式如下:
protocol://hostname[:port]/path/[;parameters][?query]#fragment
其中,protocol表示協議;hostname表示主機名;port表示端口號;path表示路徑;parameters表示參數;query表示查詢;fragment表示信息片斷。
3)請求頭
由于HTTP是一種無狀態協議,所以需要在請求頭中添加相關的首部字段,使服務器明確客戶端的目的,其常用的首部字段包括Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、Cookie、Expect、From、Host、Proxy-Authorization、Referer和User-Agent等。
4)請求體
請求體的內容一般通過請求方法POST所提交的數據獲得。
2.HTTP響應
HTTP響應是由服務器返回客戶端的相關數據,其可以分為3部分內容,即響應狀態碼(Status Code)、響應頭(Response Headers)和響應體(Response Body)。
1)響應狀態碼
響應狀態碼如表1-2所示,共分為5種:1xx,表示臨時響應,并需要客戶端繼續執行操作;2xx,表示服務器成功處理了請求;3xx,表示重定向,需要進一步操作以完成請求;4xx,表示客戶端的請求可能出錯,影響了服務器的處理;5xx,表示服務器在嘗試處理客戶端的請求時發生了內部錯誤,而這些錯誤可能是服務器本身的錯誤,并不是客戶端的請求出錯。
表1-2 響應狀態碼

續表

續表

2)響應頭
響應頭包含了服務器對客戶端請求的應答信息,其常用的首部字段包括Age、Expires、ETag、Last-Modified、Location、Server、Set-Cookie、Transfer-Encoding和X-Content-Type-Options等。
3)響應體
根據所選擇資源的類型,服務器返回客戶端的相關數據全部在響應體中。正因為如此,在編寫網絡爬蟲時,主要通過響應體獲取網頁的源代碼或JSON數據,并可以進一步從中提取所需要的內容。
3.HTTP請求和響應的過程
下面通過訪問一個網站來具體了解HTTP請求和響應的過程。
首先打開Chrome瀏覽器,右擊并選擇“檢查”即可打開瀏覽器的開發者工具面板,然后在網址欄輸入URL“http://www.oldxia.com”并按Enter鍵,此時就可以看到該URL所對應的網站頁面了,而在這個過程中,瀏覽器向網站所在的服務器發送了一個請求,服務器接收到這個請求后進行相應處理,并返回響應的結果,包括HTML、圖片、聲頻或視頻等,最后瀏覽器再進行解析,這樣就可以將網頁的內容展現出來了。
單擊開發者工具面板中的Network選項,該選項由5部分組成,如圖1-1所示,一是Controls(控制器),用于控制Network選項的外觀和功能;二是Filters(過濾器),用于控制Requests Table(請求列表)的具體顯示內容;三是Overview(概覽),用于顯示HTTP請求和響應的時間軸信息;四是Requests Table(請求列表),用于按資源獲取的先后順序顯示所有獲取的資源信息;五是Summary(概要),用于顯示總的請求數、數據傳輸量和加載時間等信息。
而Requests Table(請求列表)中的每條資源信息都表示進行了一次HTTP請求和響應。
下面再來詳細了解Requests Table(請求列表)中每列的具體含義,如表1-3所示。

圖1-1 Network選項
表1-3 Requests Table中列的含義

此時,單擊第1條資源www.oldxia.com,進而可以查看該資源的詳細情況,其由6部分組成,如圖1-2所示。
1)Headers
該部分表示資源的HTTP頭信息,其包含6部分內容,具體如下:
(1)General,該信息表示HTTP請求和響應過程中的基本信息,具體如表1-4所示。
表1-4 General


圖1-2 資源的詳細情況
(2)Response Headers,該信息表示響應頭,其常用的首部字段如表1-5所示。
表1-5 Response Headers中常用的首部字段

(3)Request Headers,該信息表示請求頭。請求頭是HTTP請求的重要組成部分,在編寫網絡爬蟲時,多數情況下需要設置請求頭,其常用的首部字段如表1-6所示。
表1-6 Request Headers中常用的首部字段

(4)Query String Parameters,該信息表示發起GET請求時所傳遞的參數。
(5)Form Data,該信息表示發起POST請求時所傳遞的參數。
(6)Request Payload,該信息表示發起POST請求時所傳遞的參數,數據格式為JSON。
這里需要注意的是,Form Data和Request Payload中的數據就是請求體(Request Body)。
2)Preview
根據所選擇資源的類型顯示相對應的預覽信息。
3)Response
根據所選擇資源的類型顯示相對應的響應內容。該響應內容就是響應體(Response Body),也是解析的目標。
4)Initiator
顯示請求的依賴關系,以及發出請求的原因。
5)Timing
顯示資源在整個請求生命周期中各部分所花費的時間。
6)Cookies
顯示所選擇資源請求和響應過程中存在的Cookie信息。
4.HTTP請求和響應過程中的Cookie
單擊開發者工具面板中的Application選項,然后單擊該選項左側Storage中的Cookies,即可查看客戶端中的Cookie,如圖1-3所示。

圖1-3 Application選項
表1-7中的每條信息表示1條Cookie,其所對應每列的具體含義如表1-7所示。
表1-7 Cookie中列的含義

- Learning Scala Programming
- Advanced Splunk
- arc42 by Example
- Mastering Yii
- 高級C/C++編譯技術(典藏版)
- PLC編程及應用實戰
- SAP BusinessObjects Dashboards 4.1 Cookbook
- Visual Basic程序設計
- 精通Python自動化編程
- Python極簡講義:一本書入門數據分析與機器學習
- Mastering Akka
- GameMaker Essentials
- Visual Basic程序設計習題與上機實踐
- Laravel Application Development Blueprints
- Swift語言實戰晉級