Python爬蟲神器requests庫的使用

左诗右码發表於2024-11-07

在現代程式設計中,網路請求幾乎是每個專案不可或缺的一部分。無論是獲取資料、傳送資訊,還是與第三方 API 互動,都會涉及到網路請求。

今天,我們就來詳細介紹一下 Python 中的 requests 庫,它是一個功能強大、使用方便的 HTTP 請求庫。🚀

讓我們從基礎知識開始,一步步深入瞭解它的特性和實際應用場景。🌟

1. 安裝 requests 庫

首先,我們需要安裝 requests 庫。你可以在終端或命令提示符中輸入以下命令:

pip install requests

這個命令會自動下載並安裝 requests 庫到你的 Python 環境中。安裝完成後,就可以在程式碼中使用它了!🎉

2. requests 庫的特性

requests 庫有很多出色的特性,以下是一些主要特點:

  • 簡潔易用:requests 庫的 API 設計非常直觀,易於上手。
  • 支援多種 HTTP 方法:可以方便地傳送 GET、POST、PUT、DELETE 等請求。
  • 自動處理 Cookies 和 Session:庫內建了對 Cookies 的處理,可以輕鬆實現會話保持。
  • 支援檔案上傳:可以輕鬆實現檔案的上傳功能。
  • 處理響應:響應內容可以方便地轉換為 JSON、文字或二進位制資料。

3. 基本功能介紹

3.1 傳送 GET 請求

GET 請求是最常用的請求型別之一。下面是一個簡單的 GET 請求示例,我們將請求 https://httpbin.org/get

import requests

# 傳送 GET 請求
response = requests.get('https://httpbin.org/get')

# 列印響應狀態碼
print('響應狀態碼:', response.status_code)  # 狀態碼 200 表示請求成功

# 列印返回的 JSON 資料
print('返回的資料:', response.json())  # 將響應內容解析為 JSON 格式

3.2 傳送 POST 請求

當我們需要向伺服器傳送資料時,可以使用 POST 請求。以下是一個傳送 POST 請求的示例:

import requests

# 定義要傳送的資料
data = {
    'title': 'foo',
    'body': 'bar',
    'userId': 1
}

# 傳送 POST 請求
response = requests.post('https://httpbin.org/post', json=data)

# 列印響應狀態碼
print('響應狀態碼:', response.status_code)

# 列印返回的資料
print('返回的資料:', response.json())

3.3 設定請求頭

在某些情況下,我們需要設定 HTTP 請求頭來傳遞額外的資訊。例如,模擬瀏覽器請求時,可以設定 User-Agent 頭。以下是設定請求頭的示例:

import requests

# 定義請求頭
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
    'Accept-Language': 'en-US,en;q=0.9',
}

# 傳送 GET 請求,並設定請求頭
response = requests.get('https://httpbin.org/get', headers=headers)

# 列印響應狀態碼和返回資料
print('響應狀態碼:', response.status_code)
print('返回的資料:', response.json())

3.4 處理請求引數

有時我們需要在 GET 請求中新增查詢引數。下面是如何實現的:

import requests

# 定義查詢引數
params = {
    'userId': 1
}

# 傳送 GET 請求,帶上查詢引數
response = requests.get('https://httpbin.org/get', params=params)

# 列印響應狀態碼和資料
print('響應狀態碼:', response.status_code)
print('返回的資料:', response.json())

4. 高階功能介紹

4.1 處理 Cookies 和 Sessions

requests 庫支援會話管理,可以保持 Cookies。這樣,我們可以在多次請求之間共享資訊。

import requests

# 建立一個會話物件
session = requests.Session()

# 傳送 GET 請求
response = session.get('https://httpbin.org/get')

# 列印響應資料
print('響應資料:', response.json())

# 在會話中傳送另一個請求
response2 = session.get('https://httpbin.org/get')
print('多次請求響應資料:', response2.json())

4.2 檔案上傳

requests 庫還支援檔案上傳。下面是一個示例:

import requests

# 定義要上傳的檔案
files = {
    'file': open('example.txt', 'rb')  # 以二進位制模式開啟檔案
}

# 傳送 POST 請求上傳檔案
response = requests.post('https://httpbin.org/post', files=files)

# 列印響應狀態碼
print('上傳響應狀態碼:', response.status_code)

4.3 錯誤處理

在進行網路請求時,可能會遇到各種錯誤。我們可以使用異常處理來捕獲和處理這些錯誤:

import requests

try:
    response = requests.get('https://httpbin.org/get')
    response.raise_for_status()  # 檢查請求是否成功
    print('請求成功!資料:', response.json())
except requests.exceptions.HTTPError as err:
    print('請求失敗!錯誤資訊:', err)

5. 爬蟲中的請求頭設定

在進行爬蟲時,設定適當的請求頭非常重要。以下是一些常見的請求頭:

  • User-Agent:瀏覽器的標識,用於告訴伺服器請求來自哪個瀏覽器。
  • Accept:告訴伺服器客戶端能夠處理的內容型別。
  • Accept-Language:告知伺服器希望接收的語言。
  • Referer:指明請求的來源地址,通常用於防止跨站請求偽造(CSRF)。

例如:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
    'Accept': 'application/json',
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'https://example.com/',
}

response = requests.get('https://httpbin.org/get', headers=headers)
print('響應狀態碼:', response.status_code)
print('返回的資料:', response.json())

6. 實際應用場景

requests 庫的實際應用場景非常廣泛,以下是幾個常見例子:

  • 資料抓取:使用 requests 庫可以輕鬆抓取網頁內容,進行資料分析或爬蟲開發。
  • API 整合:在開發過程中,我們常常需要與第三方 API 互動,requests 庫提供了簡潔的介面來處理請求和響應。
  • 自動化測試:在測試過程中,我們可以使用 requests 庫對 Web 應用的介面進行自動化測試。

7. 總結

今天,我們全面瞭解了 Pythonrequests 庫。從安裝、基本功能到高階特性,這個庫提供了許多便捷的功能,幫助我們輕鬆地處理 HTTP 請求。

在實際專案中,無論是資料抓取還是與 API 的互動,requests 庫都是一個不可或缺的工具。

希望這篇文章對你有所幫助!如果你有任何疑問或想法,歡迎在評論區分享哦!😊

相關文章