您访问的网页出错了! 网络连接异常、网站服务器失去响应_数据分析系列——静态网页爬虫进阶(requests)...
一、入門系列中相關的一些內容
數據分析系列——數據分析入門(二):基于API的爬蟲,代碼比較簡單,實現功能有限
數據分析系列——數據分析入門(三):網頁爬蟲所需的 HTML 基礎
數據分析系列——數據分析入門(四):基于HTML網頁的爬蟲(urllib.request/BeautifulSoup)
數據分析系列——數據分析入門(五):反爬蟲的一些技巧(休止時間/代理/Use-Agent)
數據分析系列——數據分析入門(六):一些靜態網頁的爬蟲實例
二、Requests庫
1.Requests與urllib.request的區別
- urllib.request
urlopen()方法能發起最基本請求,但是有兩個問題:(1)urlopen()方法返回的是一個http.client.HTTPResponse對象,需要通過read()方法進一步的處理,然后用decode()進行解碼,通常為utf-8,最終才獲取到我們想要的網頁,過程比較繁瑣;(2)urllib.request只能先構造get,post等請求,再發起。
- Requests
equests比urllib更為便捷,requests可以直接構造get,post請求并發起;requests是對urllib的進一步封裝,因此在使用上顯得更加的便捷。
2.Requests庫介紹
- Requests庫的異常
requests.ConnectionError :網絡連接錯誤異常,如DNS查詢失敗、拒絕連接等
requests.HTTPError :HTTP錯誤異常
requests.URLRequired :URL缺失異常
requests.TooManyRedirects :超過最大重定向次數
requests.ConnectTimeout :連接遠程服務器超時異常
requests.TooManyRedirects :請求URL超時,指整個訪問過程中的出現的超時異常
r.raise_for_status :判斷返回狀態是否為200,是表示訪問成功,如果不是則產生異常requests.HTTPError
【異常處理例子】
- Requests庫主要方法
requests.request() :構造一個請求,支撐以下各方法的基礎方法
requests.get() :獲取HTML網頁的主要方法,對應于HTTP的GET
requests.head() :獲取HTML網頁頭信息的主要方法,對應于HTTP的HEAD
requests.post() :向HTML網頁提交post請求的方法,對應于HTTP的POST
requests.put() :向HTML網頁提交put請求的方法,對應于HTTP的PUT
requests.patch() :向HTML網頁提交局部修改請求,對應于HTTP的PATCH
requests.delete() :向HTML網頁提交刪除請求的方法,對應于HTTP的DELETE
(1)request方法
method:請求方式,對應GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS
url:擬獲取頁面的url鏈接
**kwargs:控制訪問的參數,共13個(params/data/jason/headers/cookies/auth/files/timeout/proxies/allow_redirects/stream/verify/cert)
(2)get方法
Response對象 r 包含服務器返回的所有信息,也包含請求的Request信息
r.text() :HTTP響應內容的字符串形式,即url對應的頁面內容
r.encoding :從HTTP header 中參測的響應內容編碼方式;如果header中不存在charset,則認為編碼為ISO-8859-1,該編碼不能解析中文
r.apparent_encoding :從內容中分析出的響應內容編碼方式(備用編碼方式)
r.content HTTP:響應內容的二進制形式
3.案例
import requests url = 'http://news.carnoc.com/cache/list/news_hotlist_1.html'try:r = requests.get(url)r.raise_for_status() #如果狀態不是200,引發HTTPEroorr.encoding = r.apparent_encodingprint(r.text) except:print("產生異常")運行結果:
三、小結
Requests庫在獲取網頁數據時,非常方便,文中給的例子比較簡單,根據實際需要爬取的網頁特征某些參數可能會變化。
本章學習資源主要來自B站,包括后面的BeautifulSoup庫的學習也時參考該教程。
Python網絡爬蟲教程(北理工 嵩天)_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili?www.bilibili.com總結
以上是生活随笔為你收集整理的您访问的网页出错了! 网络连接异常、网站服务器失去响应_数据分析系列——静态网页爬虫进阶(requests)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Hibernate框架开发之九】Hib
- 下一篇: Linux命令之useradd和user