日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

您访问的网页出错了! 网络连接异常、网站服务器失去响应_数据分析系列——静态网页爬虫进阶(requests)...

發(fā)布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 您访问的网页出错了! 网络连接异常、网站服务器失去响应_数据分析系列——静态网页爬虫进阶(requests)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在之前“數(shù)據(jù)分析系列——數(shù)據(jù)分析入門”16篇中有與爬蟲的相關內(nèi)容,介紹的相對簡單。靜態(tài)網(wǎng)頁爬蟲進階系列將分別從網(wǎng)頁的自動爬取(Requests)、網(wǎng)絡數(shù)據(jù)解析(BeautifulSoup/Re)兩個大的方向詳細介紹靜態(tài)網(wǎng)頁爬取的一些知識和問題。

一、入門系列中相關的一些內(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
【異常處理例子】

def getHTNLText(url):try:r = requests.get(url,timeout=30)r.raise_for_status()r.encoding = r.apparent_encoding #從內(nèi)容中分析出的響應內(nèi)容編碼方式(備用編碼方式)return r.textexcept:return '產(chǎn)生異常'
  • 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方法

requests.request(method,url,**kwargs)

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。