1.狹義的異常處理
當一次請求多個網頁時,如果其中乙個網頁出錯,那麼整個程式就會終止,造成其他網頁都無法完成請求。所以需要通過異常處理將可能出錯的網頁進行處理,以至於其他網頁能被請求。
import requests
urls = ["", "", ""]
defget_data
(url):
data = requests.get(url)
return data.text
if __name__ == '__main__':
for url in urls:
get_data(url)
以上**由於第乙個**就出錯了,所以程式立即終止,沒有請求其他**;當錯誤**在最後的時候,即使前面3個**已經完成請求,也會因為錯誤網的存在而退出,不能完成任務。異常處理能夠避免這種情況。以下為改進後的**:
import requests
urls = ["", "", ""]
defget_data
(url):
# 將可能會報錯的語句放在try語句塊內
try:
data = requests.get(url)
# 將出錯後的處理放在exceot語句塊內
except requests.exceptions.connectionerror as e:
print("請求錯誤, url: ", url)\
print("錯誤詳情", e)
data = none
return data
if __name__ == '__main__':
for url in urls:
get_data(url)
try,except語句表達的含義是,先執行 data=requests.get(url),如果成功則跳過except繼續執行,否則出現預期錯誤時,執行except內的語句。這樣避免了因為個別網頁請求錯誤而導致整個程式崩潰。tyr, except進一步了解**如下。
def
divide
(x, y):
try:
result = x / y
except zeroexceptionerror:
print("division by zero!")
except valueerror:
print("value error")
else:
print("result is", result)
finally:
print("executing finally clause!")
注:try之後可以跟多個except語句,用於捕捉不同錯誤,如果except之後不佳具體錯誤型別,預設捕捉所有錯誤。else子句智慧型出現在except之後。finally 是在所有情況下都會被執行的語句,一般用於釋放檔案或者資源。
通過異常處理,既能夠了解錯誤情況,又能夠使得程式繼續執行。從廣義上來說,任何未達預期的情況都屬於異常。
2.廣義的異常處理
未達預期的情況,如請求遇到狀態嗎是5xx,這種情況不是自己**出了問題,而是**伺服器有問題,是得不到網頁內容的,而此時程式並不會報錯,一般重新整理就可以解決,所以我們**通過模擬重新整理這個操作就可以解決。
import time
import requests
urls = [""]
defget_data
(url, num_retries=3):
try:
data = requests.get(url)
print(data.status_code)
except requests.exceptions.connectionerror as e:
print("請求錯誤,url", url)
print("錯誤詳情:", e)
data = none
if (data!=none) and (500
<=data.status_code<600):
if(num_retries>0):
print("伺服器錯誤,正在重試")
time.sleep(1)
num_retries -= 1
get_data(url, num_retries)
return data
if __name__ == '__main__':
for url in urls:
get_data(url)
3.robot.txt略
此文為《puthon資料分析入門–從資料獲取到視覺化》書的學習筆記,有錯之處還請指出。
Python筆記 異常處理
python筆記 異常處理 捕獲異常 try 語句 except 異常名1 語句 except 異常名2 語句 else 語句 另一種形式,不包含except和else語句 try 語句 finally 語句 eg.python view plain copy print l 1,2,3,4 try...
Python 異常處理筆記
異常處理 異常 程式執行過程 現的錯誤和警告 異常類 給不同的種類的異常分的型別 nameerror 標示符未定義錯誤 print a typeerror 型別錯誤 print abcd 123 indexerror 下標越界錯誤 lis 紅燒肉 香辣烤魚 火鍋 print lis len lis ...
python異常處理 Python 異常處理
使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...