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