在Python3中,使用爬蟲庫(如Scrapy、Requests等)處理異常請求的方法如下:
在使用爬蟲庫發送請求時,可以使用try-except語句捕獲可能出現的異常。例如,使用Requests庫發送請求時,可以這樣做:
import requests
from requests.exceptions import RequestException
url = "https://example.com"
try:
response = requests.get(url)
response.raise_for_status() # 如果響應狀態碼不是200,將拋出異常
except RequestException as e:
print(f"請求異常:{e}")
else:
# 處理正常響應的邏輯
pass
Scrapy框架提供了中間件(Middleware)來處理請求和響應。你可以在中間件中捕獲異常請求并進行相應處理。例如,可以創建一個自定義中間件來處理HTTP錯誤狀態碼:
# myproject/middlewares.py
class ErrorHandlingMiddleware:
def process_exception(self, request, exception, spider):
if isinstance(exception, requests.exceptions.RequestException):
# 處理異常請求的邏輯,例如記錄日志、重試請求等
spider.logger.error(f"請求異常:{exception}")
然后,在Scrapy項目的settings.py
文件中啟用該中間件:
# myproject/settings.py
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.ErrorHandlingMiddleware': 550,
}
這樣,當爬蟲遇到異常請求時,將會調用自定義的中間件進行處理。