Python HTTP請求
http或超文本傳輸協議適用于客戶端服務器模型。通常,Web瀏覽器是客戶端,托管網站的計算機是服務器。在python中,我們使用requests模塊創建http請求。它是一個非常強大的模塊,除了簡單的請求和響應數據外,還可以處理http通信的許多方面。它可以處理身份驗證,壓縮/解壓縮,分塊請求等。
HTTP客戶端以請求消息的形式向服務器發送HTTP請求,該消息包括以下格式:
- 請求行;
- 零個或多個標頭(General | Request | Entity)字段,后跟CRLF;
- 空行(即在CRLF之前沒有任何內容的行)指示標頭字段的結尾;
- 消息正文(可選);
以下各節說明了HTTP請求消息中使用的每個實體。
1. 請求行
請求行以方法令牌開頭,然后是請求URI和協議版本,最后以CRLF結尾。元素由空格SP字符分隔。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Request-Line = Method SP Request-URI SP HTTP-Version CRLF
讓我們討論請求行中提到的每個部分。
請求方法請求方法表示要對由給定Request-URI標識的資源執行的方法。該方法區分大小寫,應始終以大寫形式提及。下表列出了HTTP/1.1中所有受支持的方法。
讓我們討論請求行中提到的每個部分。
2. 請求方法
請求方法表示要對由給定Request-URI標識的資源執行的方法。該方法區分大小寫,應始終以大寫形式。下表列出了HTTP/1.1中所有受支持的方法。
編號 | 方法 | 描述 |
1 | GET | GET方法用于使用給定URI從給定服務器檢索信息。使用GET的請求應僅檢索數據,而對數據沒有其他影響。 |
2 | HEAD | 與GET相同,但只傳輸狀態行和標頭部分。 |
3 | POST | POST請求用于使用HTML表單將數據發送到服務器,例如,客戶信息,文件上傳等。 |
4 | PUT | 使用上載的內容替換目標資源的所有當前表示形式。 |
5 | DELETE | 刪除URI給定的目標資源的所有當前表示形式。 |
6 | CONNECT | 建立到由給定URI標識的服務器的隧道。 |
7 | OPTIONS | 描述目標資源的通信選項。 |
8 | TRACE | 與目標資源的路徑一起執行消息回送測試。 |
3. Request-URI
Request-URI是統一資源標識符,用于標識在其上應用請求的資源。以下是指定URI的最常用形式:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 Request-URI = "*" | absoluteURI | abs_path | authority
當HTTP請求不適用于特定資源而是服務器本身時,將使用星號*;僅當所使用的方法不一定適用于資源時,才使用星號*。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 OPTIONS * HTTP/1.1
向代理發出HTTP請求時,將使用absoluteURI。請求代理轉發來自有效緩存的請求或服務,并返回響應。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 GET http://www.090948.com/python/python-index.html HTTP/1.1
Request-URI的最常見形式是用于標識源服務器或網關上的資源的形式。例如,希望直接從原始服務器檢索資源的客戶端將創建到主機“ www.w3.org” 的端口80的TCP連接,并發送以下行:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 GET /python/python-index.html HTTP/1.1 Host: www.090948.com
4. 使用Python請求
我們將使用requests模塊來了解http請求。安裝:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 pip install requests
在下面的示例中,我們看到一個簡單的GET請求的情況,并打印出響應的結果。選擇打印前300個字符。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.090948.com # Date : 2020-08-25 # How to make http request import requests as req r = req.get('http://www.090948.com/python/python-index.html') print(r.text)[0:300]