老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Python3爬蟲中處理異常的方法是什么

這篇文章主要介紹Python3爬蟲中處理異常的方法是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創新互聯公司是創新、創意、研發型一體的綜合型網站建設公司,自成立以來公司不斷探索創新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的10余年時間我們累計服務了上千家以及全國政企客戶,如VR全景等企業單位,完善的項目管理流程,嚴格把控項目進度與質量監控加上過硬的技術實力獲得客戶的一致贊揚。

前一節我們了解了請求的發送過程,但是在網絡不好的情況下,如果出現了異常,該怎么辦呢?這時如果不處理這些異常,程序很可能因報錯而終止運行,所以異常處理還是十分有必要的。

urllib的error模塊定義了由request模塊產生的異常。如果出現了問題,request模塊便會拋出error模塊中定義的異常。

1. URLError

URLError類來自urllib庫的error模塊,它繼承自OSError類,是error異常模塊的基類,由request模塊生的異常都可以通過捕獲這個類來處理。

它具有一個屬性reason,即返回錯誤的原因。

下面用一個實例來看一下:

from urllib import request, error
try:
    response = request.urlopen('http://cuiqingcai.com/index.htm')
except error.URLError as e:
    print(e.reason)

我們打開一個不存在的頁面,照理來說應該會報錯,但是這時我們捕獲了URLError這個異常,運行結果如下:

Not Found

程序沒有直接報錯,而是輸出了如上內容,這樣通過如上操作,我們就可以避免程序異常終止,同時異常得到了有效處理。

2. HTTPError

它是URLError的子類,專門用來處理HTTP請求錯誤,比如認證請求失敗等。它有如下3個屬性。

code:返回HTTP狀態碼,比如404表示網頁不存在,500表示服務器內部錯誤等。

reason:同父類一樣,用于返回錯誤的原因。

headers:返回請求頭。

下面我們用幾個實例來看看:

from urllib import request,error
try:
    response = request.urlopen('http://cuiqingcai.com/index.htm')
except error.HTTPError as e:
    print(e.reason, e.code, e.headers, sep='\n')

運行結果如下:

Not Found
404
Server: nginx/1.4.6 (Ubuntu)
Date: Wed, 03 Aug 2016 08:54:22 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Vary: Cookie
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Link: ; rel="https://api.w.org/"

依然是同樣的網址,這里捕獲了HTTPError異常,輸出了reason、code和headers屬性。

因為URLError是HTTPError的父類,所以可以先選擇捕獲子類的錯誤,再去捕獲父類的錯誤,所以上述代碼更好的寫法如下:

from urllib import request, error
try:
    response = request.urlopen('http://cuiqingcai.com/index.htm')
except error.HTTPError as e:
    print(e.reason, e.code, e.headers, sep='\n')
except error.URLError as e:
    print(e.reason)
else:
    print('Request Successfully')

這樣就可以做到先捕獲HTTPError,獲取它的錯誤狀態碼、原因、headers等信息。如果不是HTTPError異常,就會捕獲URLError異常,輸出錯誤原因。最后,用else來處理正常的邏輯。這是一個較好的異常處理寫法。

有時候,reason屬性返回的不一定是字符串,也可能是一個對象。再看下面的實例:

import socket
import urllib.request
import urllib.error
try:
    response = urllib.request.urlopen('https://www.baidu.com', timeout=0.01)
except urllib.error.URLError as e:
    print(type(e.reason))
    if isinstance(e.reason, socket.timeout):
        print('TIME OUT')

這里我們直接設置超時時間來強制拋出timeout異常。

運行結果如下:


TIME OUT

可以發現,reason屬性的結果是socket.timeout類。所以,這里我們可以用isinstance()方法來判斷它的類型,作出更詳細的異常判斷。

以上是Python3爬蟲中處理異常的方法是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!


當前名稱:Python3爬蟲中處理異常的方法是什么
轉載源于:http://www.xueling.net.cn/article/pjsggs.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 久久婷婷五月综合色国产香蕉 | 9l蝌蚪porny中文自拍 | 日本成年免费网站 | 69精品久久 | 国产欧美精品一区二区三区四区 | CHINESE少妇激情 | 亚州精品av久久久久久久影院 | 国产成人无码AV在线播放DVD | 国产免费无遮挡在线观看视频 | 97超碰国产精品无码分类 | 亚洲AV中文无码乱人伦在线咪咕 | 亚洲成aⅴ人片在线观 | 国产成人精品三级 | 国产呻吟对白刺激无套视频在线 | 亚洲欧美日韩精品永久 | 亚洲午夜精品无码专区在线观看 | 精品欧美一区二区在线观看欧美熟 | 黄黄的网站在线观看 | 成年人射精的黄色视频网站 | 美女四区| 一区二区三区国 | 国产性猛交╳XXX乱大交 | 91精品国 | 中文字幕在线永久在线视频 | 午夜高清国产拍精品 | 国产精品爱久久久久久久 | 亚洲色大成网站www 久久久久91 | 羞辱尤娜3中文版 | 国产自偷自拍 | av在线免费观看国产 | 国产精选在线观看播放 | 久久精品免费 | 免费A片看黄网站WWW | 国产成人拍精品视频午夜网站 | 免费精品99久久国产综合精品 | 蜜桃av麻豆 | 图片小说校园激情都市 | 成熟少妇大片免费看 | 亚洲射色精品大地资源 | 91精品久久久久久久99 | 大地资源高清在线观看剧情 |