右侧
蜘蛛池出租|权重蜘蛛池|百度蜘蛛池|搜狗蜘蛛池
当前位置:网站首页 > 蜘蛛池经验 > 正文

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

作者:蜘蛛池qq25496334发布时间:2019-12-09分类:蜘蛛池经验浏览:42


导读:

人生苦短,我用 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 Found
try:
    response = request.urlopen('https://www.geekdigging.com/aa')
except error.URLError as e:
    print(e.reason)

# 訪問超時,報錯:timed out
try:
    response = request.urlopen('https://www.baidu.com', timeout=0.001)
except error.URLError as e:
    print(e.reason)

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

Not Found
timed out

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

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

from urllib import request, error
import 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 Found
404
Date: Sun, 01 Dec 2019 15:11:48 GMT
Content-Type: text/html
Content-Length: 49307
Connection: close
Server: tencent-cos
Last-Modified: Sun, 01 Dec 2019 15:03:24 GMT
X-NWS-UUID-VERIFY: c89959eb27b89a0fb1c0326d1b2e7171
Accept-Ranges: bytes
ETag: "1bb6cc2c28a5621cf0c3238107edc229"
x-cos-error-code: NoSuchKey
x-cos-error-detail-Key: aa
x-cos-error-message: The specified key does not exist.
x-cos-request-id: NWRlM2Q4MzRfMzNhNzAzMDlfYTljZl8yNGU1NTgx
x-cos-trace-id: OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OTQ5YWUxMjNkYTk3NzdjZmZlMDQzOTgxOThkOTNlOWFkOGJiN2YzOGQ5MDdjNGY0ODQ1MGIzYjUyMzg2NjFhNzc=
X-Daa-Tunnel: hop_count=2
X-NWS-LOG-UUID: 7c3fe80b-af9a-4e59-969b-10c8b3963a1d
X-Cache-Lookup: Hit From Upstream
X-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

【蜘】【蛛】【池】【是】【什】【么】 【蜘】【蛛】【池】【是】【什】【么】【意】【思】 【网】【站】【蜘】【蛛】【池】【提】【升】【排】【名】 【给】【力】【蜘】【蛛】【池】 【蜘】【蛛】【池】【租】【用】 【蜘】【蛛】【池】 【网】【站】【蜘】【蛛】【池】 【千】【站】【云】【蜘】【蛛】【池】 【蜘】【蛛】【池】【 】【寄】【生】【虫】 【蜘】【蛛】【池】【搭】【建】 【蜘】【蛛】【池】【程】【序】 【蜘】【蛛】【池】【下】【载】【地】【址】 【蜘】【蛛】【池】【源】【码】 【黑】【帽】【蜘】【蛛】【池】 【云】【蜘】【蛛】【池】 【阿】【里】【云】【蜘】【蛛】【池】 【蜘】【蛛】【池】【怎】【么】【搭】【建】 【蜘】【蛛】【池】【搭】【建】【教】【程】 【如】【何】【搭】【建】【蜘】【蛛】【池】 【小】【霸】【王】【蜘】【蛛】【池】【教】【程】 【蜘】【蛛】【池】【百】【度】【收】【录】【查】【询】 【百】【度】【秒】【收】【录】【蜘】【蛛】【池】 【百】【度】【收】【录】【蜘】【蛛】【池】 【百】【度】【蜘】【蛛】【池】 【蜘】【蛛】【池】【程】【序】【破】【解】【版】 【阿】【里】【蜘】【蛛】【池】【破】【解】【版】 【小】【霸】【王】【蜘】【蛛】【池】【破】【解】【版】 【免】【费】【蜘】【蛛】【池】【程】【序】 【蜘】【蛛】【池】【程】【序】【源】【码】 【免】【费】【蜘】【蛛】【池】 【蜘】【蛛】【池】【出】【租】 【无】【名】【蜘】【蛛】【池】 【蜘】【蛛】【池】【软】【件】 【蜘】【蛛】【池】【采】【集】【关】【键】【字】 【蜘】【蛛】【池】【原】【理】

标签:百度算法百度最新算法蜘蛛池