在Python爬蟲開發中,處理異常是非常重要的,因為它可以幫助你確保程序在遇到錯誤時不會崩潰,并且可以記錄或報告錯誤信息。以下是一些常見的異常處理方法:
使用try-except
語句:
這是處理異常的基本方法。你可以將可能引發異常的代碼放在try
塊中,然后在except
塊中捕獲并處理異常。
try:
# 可能引發異常的代碼
response = requests.get(url)
response.raise_for_status() # 如果響應狀態碼不是200,會引發HTTPError異常
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except Exception as err:
print(f"An error occurred: {err}")
else:
# 如果沒有異常發生,執行這里的代碼
data = response.json()
使用try-except-finally
語句:
finally
塊中的代碼無論是否發生異常都會執行。這對于清理資源(如關閉文件、數據庫連接等)非常有用。
try:
# 可能引發異常的代碼
response = requests.get(url)
response.raise_for_status()
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except Exception as err:
print(f"An error occurred: {err}")
else:
# 如果沒有異常發生,執行這里的代碼
data = response.json()
finally:
# 無論是否發生異常都會執行的代碼
print("Finished processing.")
使用日志記錄:
日志記錄可以幫助你更好地跟蹤和調試程序。你可以使用Python的logging
模塊來記錄異常信息。
import logging
logging.basicConfig(filename='app.log', level=logging.ERROR)
try:
# 可能引發異常的代碼
response = requests.get(url)
response.raise_for_status()
except requests.exceptions.HTTPError as http_err:
logging.error(f"HTTP error occurred: {http_err}")
except Exception as err:
logging.error(f"An error occurred: {err}")
else:
# 如果沒有異常發生,執行這里的代碼
data = response.json()
使用try-except
語句處理特定類型的異常:
如果你只想捕獲特定類型的異常,可以在except
塊中指定異常類型。
try:
# 可能引發異常的代碼
response = requests.get(url)
response.raise_for_status()
except requests.exceptions.Timeout as timeout_err:
print(f"Timeout error occurred: {timeout_err}")
except requests.exceptions.RequestException as req_err:
print(f"Request error occurred: {req_err}")
except Exception as err:
print(f"An error occurred: {err}")
else:
# 如果沒有異常發生,執行這里的代碼
data = response.json()
通過這些方法,你可以有效地處理Python爬蟲開發中的異常,確保程序的穩定性和可靠性。