在Python中進行數據爬蟲的異常處理,可以使用try-except語句來捕獲和處理異常。以下是一個簡單的示例:
import requests
from bs4 import BeautifulSoup
def get_html(url):
try:
response = requests.get(url)
response.raise_for_status() # 如果請求返回的狀態碼不是200,將拋出異常
return response.text
except requests.RequestException as e:
print(f"請求異常: {e}")
return None
except Exception as e:
print(f"其他異常: {e}")
return None
def parse_html(html):
if html is None:
return []
soup = BeautifulSoup(html, "html.parser")
try:
# 在這里解析HTML,例如提取數據
data = []
for item in soup.find_all("div", class_="item"):
title = item.find("h2").text
link = item.find("a")["href"]
data.append({"title": title, "link": link})
return data
except Exception as e:
print(f"解析異常: {e}")
return []
def main():
url = "https://example.com"
html = get_html(url)
data = parse_html(html)
print(data)
if __name__ == "__main__":
main()
在這個示例中,我們使用了兩個函數get_html
和parse_html
。get_html
函數用于發送HTTP請求并獲取HTML內容,parse_html
函數用于解析HTML并提取數據。
在get_html
函數中,我們使用try-except語句捕獲可能的異常,例如請求異常(如連接超時、DNS解析失敗等)和其他異常。如果發生異常,我們將打印異常信息并返回None。
在parse_html
函數中,我們同樣使用try-except語句捕獲可能的異常。如果發生異常,我們將打印異常信息并返回一個空列表。
通過這種方式,我們可以確保在爬蟲過程中遇到問題時,程序不會崩潰,而是能夠繼續運行或優雅地退出。