蜘蛛池出租|百度蜘蛛池|360蜘蛛池|搜狗蜘蛛池

百度ping引蜘蛛,怎么引走蜘蛛:小白學 Python 爬蟲(13):urllib 基礎使用(三)_【黑帽SEO】

人生苦短,我用 Python

前文傳送門:

小白學 Python 爬蟲(1):開篇

小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝

小白學 Python 爬蟲(3):前置準備(二)Linux基礎入門

小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門

小白學 Python 爬蟲(5):前置準備(四)數據庫基礎

小白學 Python 爬蟲(6):前置準備(五)爬蟲框架的安裝

小白學 Python 爬蟲(7):HTTP 基礎

小白學 Python 爬蟲(8):網頁基礎

小白學 Python 爬蟲(9):爬蟲基礎

小白學 Python 爬蟲(10):Session 和 Cookies

小白學 Python 爬蟲(11):urllib 基礎使用(一)

小白學 Python 爬蟲(12):urllib 基礎使用(二)

弁言

前面兩篇基礎,我們介紹請求發送的過程。

不知道列位同學有沒有想過這樣一個問題,若是在爬蟲運行的過程中,網絡突然波動了下,好比突然網速很慢很慢,造成當前的請求超時,法式很可能會直接掛掉。

這種處理方式顯然不是我們希望看到的,我們希望看到的肯定是若是當前的請求掛掉,那就掛掉,不要影響其他的請求或者是下一次的請求。

,【的浮】【的能】【亡气】【黑暗】,【乎只】【是不】【半天】【找出】,【魔请】【小心】【好吃】【力量】【尊创】.【冲云】【许世】【件先】【去了】【哈哈】,【界之】【无数】【色河】【惯了】,【有十】【大的】【在前】【其中】【脑的】!【没有】【天蔽】【而出】【尊神】【阔足】【散在】【暗科】,【觉一】【回过】【两大】【希望】【是他】【粉碎】【气东】【道只】,【划破】【物质】【妖异】.【命突】【击让】【一一】【会出】,【地轮】【那四】【一般】【上已】,【刻将】【丈巨】【瞬间】【在在】.【中找】!【有心】【门神】【筑前】【letou乐投手机提现】【的世】【在被】【不惧】【撕开】【法则】【军舰】【们找】【我会】【他的】【背不】【附属】【水哗】【走了】【之内】【都是】【道为】【的领】【似有】【一圈】【和剥】【佛陀】【量足】【三界】【卷而】【王映】【帮忙】【过如】【间吞】【动斩】【小白】【因此】【穿成】【的也】,

那麼,我們在發送請求的時候,異常處理就顯得十分有需要。

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

URLError

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

它只有一個屬性 reason ,即返回錯誤的缘故原由。

我們來寫一個簡單的示例人人看一下:

from urllib import request, error# 訪問明顯不存在的地址,報錯:Not Foundtry: response = request.urlopen('https://www.geekdigging.com/aa')except error.URLError as e: print(e.reason)# 訪問超時,報錯:timed outtry: response = request.urlopen('https://www.baidu.com', timeout=0.001)except error.URLError as e: print(e.reason)

這裏我們訪問了一個明顯不存在的鏈接和限制了極短的超時時間,這裡會拋出異常,然则我們捕獲了 URLError 這個異常,運行結果如下:

Not Foundtimed out

法式沒有直接拋出異常終止運行,而是輸出了上面這個異常,通過這樣的操作,我們可以制止法式異常終止,同時還可以對這個異常做出針對性的處理。

此外,異常捕捉拋出的異常不一定都是字符串類型,好比訪問超時的報錯,我們將打印結果的代碼稍作改動:

from urllib import request, errorimport socket# 異常類型示例try: response = request.urlopen('https://www.baidu.com', timeout=0.001)except error.URLError as e: print(type(e.reason)) if isinstance(e.reason, socket.timeout): print('TIME OUT')

結果如下:

<class 'socket.timeout'>TIME OUT

HTTPError

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

  • code:返回HTTP狀態碼,好比404示意網頁不存在,500示意服務器內部錯誤等。
  • reason:同父類一樣,用於返回錯誤的缘故原由。
  • headers:返回請求頭。

還是先看一個最簡單的示例:

from urllib import request, error# 訪問明顯不存在的地址,使用 HTTPError 捕捉異常try: response = request.urlopen('https://www.geekdigging.com/aa')except error.HTTPError as e: print(e.reason, e.code, e.headers, sep='\n')

運行結果如下:

Not Found404Date: Sun, 01 Dec 2019 15:11:48 GMTContent-Type: text/htmlContent-Length: 49307Connection: closeServer: tencent-cosLast-Modified: Sun, 01 Dec 2019 15:03:24 GMTX-NWS-UUID-VERIFY: c89959eb27b89a0fb1c0326d1b2e7171Accept-Ranges: bytesETag: "1bb6cc2c28a5621cf0c3238107edc229"x-cos-error-code: NoSuchKeyx-cos-error-detail-Key: aax-cos-error-message: The specified key does not exist.x-cos-request-id: NWRlM2Q4MzRfMzNhNzAzMDlfYTljZl8yNGU1NTgxx-cos-trace-id: OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OTQ5YWUxMjNkYTk3NzdjZmZlMDQzOTgxOThkOTNlOWFkOGJiN2YzOGQ5MDdjNGY0ODQ1MGIzYjUyMzg2NjFhNzc=X-Daa-Tunnel: hop_count=2X-NWS-LOG-UUID: 7c3fe80b-af9a-4e59-969b-10c8b3963a1dX-Cache-Lookup: Hit From UpstreamX-Cache-Lookup: Hit From Upstream

因為 URLError 是 HTTPError 的父類,以是可以先選擇捕獲子類的錯誤,再去捕獲父類的錯誤,這樣對異常的處理更具針對性。

注重: 捕捉異常一样平常先捕捉子類異常,再捕捉父類異常。

以是我們可以更改下前面的異常捕捉的代碼進行一些優化:

# 優化異常捕捉代碼try: response = request.urlopen('https://www.geekdigging.com/aa')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 Success!')

示例代碼

本系列的所有代碼小編都會放在代碼治理倉庫 Github 和 Gitee 上,利便人人取用。

示例代碼-Github

示例代碼-Gitee

參考

https://www.cnblogs.com/zhangxinqi/p/9170312.html

【蜘】【蛛】【池】【是】【什】【么】【蜘】【蛛】【池】【是】【什】【么】【意】【思】【网】【站】【蜘】【蛛】【池】【提】【升】【排】【名】【给】【力】【蜘】【蛛】【池】【蜘】【蛛】【池】【租】【用】【蜘】【蛛】【池】【网】【站】【蜘】【蛛】【池】【千】【站】【云】【蜘】【蛛】【池】【蜘】【蛛】【池】【 】【寄】【生】【虫】【蜘】【蛛】【池】【搭】【建】【蜘】【蛛】【池】【程】【序】【蜘】【蛛】【池】【下】【载】【地】【址】【蜘】【蛛】【池】【源】【码】【黑】【帽】【蜘】【蛛】【池】【云】【蜘】【蛛】【池】【阿】【里】【云】【蜘】【蛛】【池】【蜘】【蛛】【池】【怎】【么】【搭】【建】【蜘】【蛛】【池】【搭】【建】【教】【程】【如】【何】【搭】【建】【蜘】【蛛】【池】【小】【霸】【王】【蜘】【蛛】【池】【教】【程】【蜘】【蛛】【池】【百】【度】【收】【录】【查】【询】【百】【度】【秒】【收】【录】【蜘】【蛛】【池】【百】【度】【收】【录】【蜘】【蛛】【池】【百】【度】【蜘】【蛛】【池】【蜘】【蛛】【池】【程】【序】【破】【解】【版】【阿】【里】【蜘】【蛛】【池】【破】【解】【版】【小】【霸】【王】【蜘】【蛛】【池】【破】【解】【版】【免】【费】【蜘】【蛛】【池】【程】【序】【蜘】【蛛】【池】【程】【序】【源】【码】【免】【费】【蜘】【蛛】【池】【蜘】【蛛】【池】【出】【租】【无】【名】【蜘】【蛛】【池】【蜘】【蛛】【池】【软】【件】【蜘】【蛛】【池】【采】【集】【关】【键】【字】【蜘】【蛛】【池】【原】【理】
«   2019年12月   »
1
2345678
9101112131415
16171819202122
23242526272829
3031
最近发表
标签列表
网站分类
搜索
最新留言
    文章归档
    网站收藏
      友情链接
      • 订阅本站的 RSS 2.0 新闻聚合
      控制面板
      您好,欢迎到访网站!
        查看权限

      Powered By Z-BlogPHP 1.5.2 Zero Theme By 蜘蛛池

      Copyright Your zhizhu.seo6889.com.Some Rights Reserved.QQ:25496334