1、requests異常情況
在進行網路訪問時,經常會遇到各種錯誤的情況發生,requests庫的主要異常情況如下:
requests.urlrequired url缺失異常
requests.toomanyredirects 超過最大重定向次數,產生重定向異常
requests.connection 網路連線錯誤異常,如dns查詢失敗、拒絕連線等
requests.timeout 請求url超時,產生超時異常
requests.httperror http錯誤異常
requests.connecttimeout 連線遠端伺服器超時異常
在requests庫中所有requests顯式丟擲的異常都繼承自 requests.exceptions.requestexception 。
2、requests異常處理
當我們無論是get/post請求後賦值給response變數,response返回所有內容或者丟擲異常,同時在response物件還提供乙個方法——
response.raise_for_status(),其作用是當訪問網頁後的http狀態碼不是200時,產生requests.httperror。基於此,就不用判斷很多種狀態碼不為200情況了,在大批量爬取網頁內容時,只要出現httperror異常,直接記錄或者跳過,爬完所有資料後在進行處理。
3、異常處理小例子
#-- coding: utf-8 --
created on tue apr 16 23:08:21 2019
@author: www.lizenghai.com
import requests
urls = [『『『
for i,u in enumerate(urls):
print(u)
timeout = 3
if i ==0:
#這裡只對第乙個url(正確的url)進行超時測試
#在千分之一秒內肯定無法完成連線的,所以會報超時的錯誤。
timeout = 0.001
try:
response = requests.get(u, timeout=timeout)
response.raise_for_status() # 檢查http狀態碼是否為200
except requests.connecttimeout:
print(『超時!』)
print(『http狀態碼非200』)
except exception as e:
print(『未進行容錯處理的情況:』, e)
執行上述例子,將返回如下結果:
超時!/404
http狀態碼非200
xx/未進行容錯處理的情況: httpconnectionpool(host=』www.lizenghai.comxx』, port=80): max retries exceeded with url: / (caused by newconnectionerror(『: failed to establish a new connection: [errno 11004] getaddrinfo failed』))
Python爬蟲 Request模組
文章說明了request模組的意義,且強調了request模組使用更加方便。接下來介紹幾種常用的request操作,並且會在後續補充說明一些特定用法。匯入檔案 import requests一 請求 右邊為請求語句,返回值為response回應 r requests.get r requests.p...
python爬蟲利器 request庫
request庫比urllib2庫更為高階,因為其功能更強大,更易於使用。使用該庫可以十分方便我們的抓取。基本請求 r requests.get r requests.post r requests.put r requests.delete r requests.head r requests.o...
爬蟲 python(二)初識request
from urllib.request import urlopen 傳送請求,獲取伺服器給的響應 url response urlopen url 讀取結果,無法正常顯示中文 html response.read 進行解碼操作,轉為utf 8 html decode html.decode 列印結...