Python中get()函數的完全指南

在Python中,GET請求是最常見的一個HTTP請求方法。而在實現該方法時,使用`requests`模塊的`get()`函數是非常流行的選擇。在本篇文章中,我們將全面介紹`get()`函數及其各種不同用法,幫助您更好地了解和使用它。

一、發送簡單的GET請求

首先,我們來看一個最簡單的例子。向某個網站發送一個GET請求,獲取其返回的HTML頁面,然後列印出來。對於這個任務,無需傳遞任何參數即可實現。

import requests

response = requests.get('http://httpbin.org/html')
print(response.text)

這裡我們向http://httpbin.org/html發送GET請求,該網站會返回一個簡單的HTML頁面作為響應。使用`text`屬性可以獲取到響應的HTML內容。

理解`get()`函數的一個重要方面是了解其可選參數的作用。例如,可以使用`headers`參數向伺服器發送附加的頭信息,如`User-Agent`。這對於模擬不同的客戶端或操作系統非常有用。

import requests

url = 'http://httpbin.org/user-agent'
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
print(response.json())

這裡我們設置了一個偽造的`User-Agent`頭,然後向http://httpbin.org/user-agent發送GET請求。該網站會返回一個JSON響應,其中包含了客戶端的詳細信息。使用`json()`方法可以將響應內容轉換為JSON格式的數據。

二、傳遞URL參數

發送GET請求時,我們通常需要將查詢字元串參數添加到URL後面。這些參數以`?`符號開頭,然後是類似`key=value`的形式來傳遞。可以使用`params`參數向`get()`函數傳遞這些參數。

import requests

url = 'http://httpbin.org/get'
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get(url, params=params)
print(response.url)

這裡我們向http://httpbin.org/get發送GET請求,並傳遞了兩個URL參數,即`key1`和`key2`。使用`url`屬性可以獲取到完整的URL,包含了傳遞的參數。

三、發送請求時超時處理

如果請求一個長時間不響應的伺服器,我們可能需要手動處理超時情況。`requests`模塊的`get()`函數提供了一個`timeout`參數,以便在連接請求超過指定秒數時引發一個異常。

import requests

url = 'http://httpbin.org/delay/5'
try:
    response = requests.get(url, timeout=2)
    print(response.text)
except requests.exceptions.Timeout:
    print('Timeout occurred')

這裡我們向http://httpbin.org/delay/5發送GET請求,但設置了一個超時時間為2秒。由於響應需要5秒才能完成,因此會引發一個`Timeout`異常。在這種情況下,我們捕獲該異常並列印出錯誤信息。

四、處理請求的響應

`get()`函數返回一個`Response`對象,該對象包含響應的所有信息。在處理響應時,我們可以使用各種`Response`對象的屬性和方法。以下是一些常見的例子:

import requests

url = 'http://httpbin.org/get'
response = requests.get(url)

# 獲取HTTP狀態碼
print(response.status_code)

# 獲取響應頭部信息
print(response.headers)

# 獲取響應內容(二進位數據)
print(response.content)

# 將響應內容解析為文本(Unicode)格式
print(response.text)

# 將響應內容解析為JSON格式
print(response.json())

# 獲取響應時間(以秒為單位)
print(response.elapsed.total_seconds())

五、使用代理伺服器

有時,訪問某些網站可能因為您所在的地址而被屏蔽了。在這種情況下,我們可以使用代理伺服器來發送請求,以改變我們的位置。

可以通過將`proxies`參數傳遞給`get()`函數來使用代理伺服器。將`proxies`設為一個字典,鍵為`http`和/或`https`,值為代理伺服器的URL。

import requests

url = 'http://httpbin.org/ip'
proxies = {'http': 'http://localhost:8080', 'https': 'https://localhost:8080'}
response = requests.get(url, proxies=proxies)
print(response.json())

這裡我們向http://httpbin.org/ip發送GET請求,並傳遞了一個代理伺服器URL。使用`json()`方法解析響應內容,可以看到我們使用代理伺服器的IP地址。

六、基本身份驗證

有時,我們需要向某些需要授權才能訪問的站點發送請求。在這種情況下,我們可以使用基本身份驗證。這種身份驗證方式會在HTTP頭部中發送用戶名和密碼的base64表示形式。

可以通過將`auth`參數傳遞給`get()`函數來實現基本身份驗證。將`auth`設為一個元組,第一個元素是用戶名,第二個元素是密碼。

import requests

url = 'http://httpbin.org/basic-auth/user/passwd'
auth = ('user', 'passwd')
response = requests.get(url, auth=auth)
print(response.text)

這裡我們向http://httpbin.org/basic-auth/user/passwd發送GET請求,並使用基本身份驗證。該網站需要用戶名`user`和密碼`passwd`才能訪問。使用`text`屬性獲取到響應內容。

七、自定義請求頭部

有時,我們需要向伺服器發送某些自定義的HTTP頭部,例如`Referer`、`Accept-Language`等。可以通過將`headers`參數傳遞給`get()`函數來實現這一點。

import requests

url = 'http://httpbin.org/headers'
headers = {'Referer': 'http://www.example.com'}
response = requests.get(url, headers=headers)
print(response.json())

這裡我們向http://httpbin.org/headers發送GET請求,並傳遞了一個自定義的`Referer`頭部。該網站會返回一個JSON響應,其中包含了我們發送的HTTP頭部信息。

八、使用會話對象

如果我們需要處理多個相關的請求,例如在同一會話中使用基本身份驗證或使用代理伺服器,可以使用`requests`模塊的會話對象。會話對象可以處理多個相關請求,並自動將cookie等信息保存在會話中。

可以使用`Session()`函數創建一個會話對象。

import requests

session = requests.Session()
url = 'http://httpbin.org/cookies/set/sessioncookie/123456789'
session.get(url)
response = session.get('http://httpbin.org/cookies')
print(response.json())

這裡我們創建一個會話對象,然後發送兩個相關的請求。在第一個請求中,我們設置一個名為`sessioncookie`的cookie。在第二個請求中,我們檢索該cookie,並在響應中返回它的值。

九、結語

在本文中,我們介紹了`get()`函數的許多不同用法,包括基本使用、URL參數傳遞、超時處理、處理響應、使用代理伺服器、基本身份驗證、自定義請求頭部以及會話對象。這些技術可以幫助您更好地了解和使用`get()`函數,以便更輕鬆地進行HTTP請求和響應處理。

原創文章,作者:VDXSC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/333697.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VDXSC的頭像VDXSC
上一篇 2025-02-01 13:34
下一篇 2025-02-01 13:34

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29

發表回復

登錄後才能評論