溫馨提示×

python爬蟲requests怎樣處理重定向

小樊
131
2024-12-11 11:14:21
欄目: 編程語言

在Python的requests庫中,處理重定向非常簡單。默認情況下,requests會自動處理HTTP重定向(例如,從HTTP到HTTPS)。如果你想要自定義處理重定向的行為,可以通過設置allow_redirects參數來實現。

以下是一個簡單的示例:

import requests

url = 'http://example.com'  # 這是一個帶有重定向的URL

# 默認情況下,requests會自動處理重定向
response = requests.get(url)

print(response.url)  # 輸出最終的URL,可能是重定向后的URL
print(response.status_code)  # 輸出HTTP狀態碼,200表示成功,3xx表示重定向

如果你想要禁用自動重定向處理,可以將allow_redirects參數設置為False

import requests

url = 'http://example.com'  # 這是一個帶有重定向的URL

# 禁用自動重定向處理
response = requests.get(url, allow_redirects=False)

print(response.url)  # 輸出請求的URL,而不是重定向后的URL
print(response.status_code)  # 輸出HTTP狀態碼,3xx表示重定向

如果你想要自定義重定向的行為,例如只允許特定的重定向狀態碼,可以使用allow_redirects參數的rules參數。rules參數是一個函數,該函數接受一個RedirectInfo對象作為參數,并返回一個布爾值,表示是否允許重定向。

以下是一個示例:

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

url = 'http://example.com'  # 這是一個帶有重定向的URL

# 自定義重定向行為,只允許301和302狀態碼的重定向
def allow_redirects(redirect_info):
    return redirect_info.response.status_code in (301, 302)

# 創建一個Session對象,并設置重定向策略
session = requests.Session()
adapter = HTTPAdapter(max_retries=Retry(total=3, redirect=3, status_forcelist=[301, 302], allowed_methods=["HEAD", "GET", "OPTIONS"]))
session.mount("http://", adapter)
session.mount("https://", adapter)

# 使用自定義的Session對象發送請求
response = session.get(url)

print(response.url)  # 輸出最終的URL,可能是重定向后的URL
print(response.status_code)  # 輸出HTTP狀態碼,200表示成功,3xx表示重定向

在這個示例中,我們創建了一個Session對象,并使用HTTPAdapter設置了重定向策略。max_retries參數表示允許的最大重試次數,redirect參數表示允許的重定向次數,status_forcelist參數表示允許的重定向狀態碼列表,allowed_methods參數表示允許的HTTP方法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女