最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲Requests庫的使用詳情

 更新時間:2022年08月16日 15:31:48   作者:阿呆小記???????  
這篇文章主要介紹了Python爬蟲Requests庫的使用詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

一、Requests庫的7個主要的方法

1.request()

構(gòu)造請求,支撐以下的基礎(chǔ)方法

2.get()

獲取HTML頁面的主要方法,對應(yīng)于http的get

3.head()

獲取HTML頁面的頭部信息的主要方法,對應(yīng)于http的head

 

-??以很少的流量獲取索要信息的概要內(nèi)容??

4.post()

向HTML提交post請求的方法,對應(yīng)于http的post

 

-??向URLpost一個字典將自動編碼為form(表單)??

 

-??向URLpost一個字符串自動編碼為data??

5.put()

向HTML提交put請求的方法,對應(yīng)于http的put

6.patch()

向HTML提交局部修改的請求,對應(yīng)于http的patch

7.delete()

向HTML提交刪除請求,對應(yīng)于http的delete

以下代碼是描述的request方法中的13個控制訪問參數(shù):

import requests

# **kwargs:控制訪問的參數(shù),均為可選項,不僅僅是針對request,其他六中方法依舊適用

# params:字典或字節(jié)序列,作為參數(shù)增加到URL中,可以通過該參數(shù)篩選數(shù)據(jù)
kv = {"key1":"value1","key2":"value2"}
r = requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)
# https://python123.io//ws?key1=value1&key2=value2

# data:字典、字節(jié)序列或文件對象,作為Request的內(nèi)容;提交時,作為數(shù)據(jù)內(nèi)容添加到當前的連接下
kv = {"key1":"value1","key2":"value2"}
r = requests.request('POST','http://python123.io/ws',params=kv)
body = '主體內(nèi)容'
r = requests.request('POST','http://python123.io/ws',params=body)

# json:JSON格式的數(shù)據(jù),作為Request的內(nèi)容
kv = {"key1":"value1"}
r = requests.request('POST','http://python123.io/ws',json=kv)

# headers:字典,HTTP定制頭,模擬需要的瀏覽器來進行訪問
hd = {"user-agent":"Chrome/10"}
r = requests.request('POST','http://python123.io/ws',headers=hd)

# cookies:字典或CookieJar,Request中的cookie
# auth:元組,支持HTTP認證功能
# files:字典類型,傳輸文件;將某個文件提交到連接上
fs = {"file":open('data.xls','rb')}
r = requests.request('POST','http://python123.io/ws',file=fs)

# timeout:設(shè)定超時時間,秒為單位;在規(guī)定的時間內(nèi)沒有接收到響應(yīng)將會顯示timeout異常
r = requests.request('POST','http://www.baidu.com',timeout=10)

# proxies:字典類型,設(shè)定訪問代理服務(wù)器,可以增加登錄認證
pxs = {'http':'http://user:pass@10.10.10.1:1234', #當我們進入HTTP協(xié)議的網(wǎng)站時增加登錄認證
'https':'https://10.10.10.1.4321' } #當我們進入HTTPS協(xié)議的網(wǎng)站時,直接使用代理服務(wù)器的IP地址;可以有效掩蓋爬蟲的原IP地址
r = requests.request('GET','http://python123.io/ws',proxies=pxs)

# allow_redirects:True/False,默認為True,重定向開關(guān)
# stream:True/False,默認為True,獲取內(nèi)容立刻下載的開關(guān)
# verify:True/False,默認為True,認證SSL證書開關(guān)
# cert:本地SSL證書路徑

二、Response對象的屬性

status_code

HTTP請求的返回狀態(tài)碼,200表示成功,400表示失敗

text

HTTP響應(yīng)內(nèi)容的字符串形式,即URL對應(yīng)的頁面內(nèi)容

encoding

從HTTPheader中猜測的響應(yīng)內(nèi)容編碼方式

 

-??如果header中不存在charset,則認為編碼是ISO-8859-1??

apparent_encoding

從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼方式(備選編碼方式)

 

-??從內(nèi)容中分析出可能的編碼形式??

content

HTTP響應(yīng)內(nèi)容的二進制形式

import requests

#構(gòu)造一個向服務(wù)器請求資源的Response對象
r = requests.get(url="http://www.baidu.com")

print(r.status_code) #打印請求狀態(tài)碼
#200
print(type(r)) #打印請求對象類型
#<class 'requests.models.Response'>
print(r.headers) #打印請求對象的頭部信息
#{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sat, 27 Jun 2020 09:03:41 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:32 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}

print(r.text)
print(r.encoding) #ISO-8859-1
print(r.apparent_encoding) #備用編碼utf-8
r.encoding = "utf-8"
print(r.text)

直接解析會出現(xiàn)亂碼,將字符設(shè)為apparent_encoding時會結(jié)局問題。

三、爬取網(wǎng)頁通用代碼

try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "產(chǎn)生異常!"

作用:??r.raise_for_status()函數(shù)??判斷當前請求返回狀態(tài)碼,當返回狀態(tài)碼不為200時,產(chǎn)生異常并能夠被except捕獲

import requests

# (定義方法)封裝函數(shù)
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "代碼錯誤,產(chǎn)生異常!"

if __name__ =="__main__":
url = "http://www.baidu.com"
print(getHTMLText(url)) #正常顯示爬取的頁面信息

if __name__ =="__main__":
url = "www.baidu.com" #缺失了
print(getHTMLText(url)) #代碼錯誤,產(chǎn)生異常!

四、Resquests庫的常見異常

requests.ConnectionError

網(wǎng)絡(luò)連接錯誤異常,如DNS查詢失敗、拒絕連接等

requests.HTTPError

HTTP錯誤異常

requests.URLRequired

URL缺失異常

requests.TooManyRedirects

超過最大重定向次數(shù),產(chǎn)生重定向異常

requests.ConnectTimeout

連接遠程服務(wù)器超時異常

requests.Timeout

請求URL超時,產(chǎn)生超時異常

五、Robots協(xié)議展示

import requests
# (定義方法)封裝函數(shù)
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "代碼錯誤,產(chǎn)生異常!"

if __name__ =="__main__":
url = "http://www.baidu.com/robots.txt"
print(getHTMLText(url)) #正常顯示爬取的頁面信息,顯示出robots協(xié)議對于不同類型爬蟲的限制

六、案例展示

1.爬取京東商品信息

在爬取后,我們發(fā)現(xiàn)在控制臺中返回了帶有??login???的一個href,并沒有具體的信息內(nèi)容。但是在爬取主頁時,可以直接獲取主頁具體信息。個人認為是由于無法識別是否已經(jīng)登陸而導(dǎo)致的,后續(xù)學(xué)習(xí)中會跟進知識點及解決方法。(若有大佬會的,感謝評論?。?/strong>

2.爬取網(wǎng)上圖片并保存

import requests
import os

url = "http://image.ngchina.com.cn/2019/0523/20190523103156143.jpg"
root = "F:/圖片/" #根目錄
path = root + url.split('/')[-1] #以最后一個/后的文字命名
try:
if not os.path.exists(root): #如果不存在根目錄文件,則創(chuàng)建根目錄文件夾
os.mkdir(root) #該方法只能創(chuàng)建一級目錄,如要創(chuàng)建多層,可以遍歷循環(huán)創(chuàng)建
if not os.path.exists(path):
r = requests.get(url)
with open(path,'wb') as f:
f.write(r.content) #r.content返回的是2進制編碼,將其寫入
f.close()
print("文件已成功保存!")
else:
print("文件已存在~")
except:
print("爬取失?。。?!")

到此這篇關(guān)于Python爬蟲Requests庫的使用詳情的文章就介紹到這了,更多相關(guān)Python Requests庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談numpy.where() 的用法和np.argsort()的用法說明

    淺談numpy.where() 的用法和np.argsort()的用法說明

    這篇文章主要介紹了淺談numpy.where() 的用法和np.argsort()的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • python 實現(xiàn)return返回多個值

    python 實現(xiàn)return返回多個值

    今天小編就為大家分享一篇python 實現(xiàn)return返回多個值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Pandas數(shù)據(jù)查詢的集中實現(xiàn)方法

    Pandas數(shù)據(jù)查詢的集中實現(xiàn)方法

    本文主要介紹了Pandas數(shù)據(jù)查詢的集中實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python 殺死自身進程的實現(xiàn)方法

    python 殺死自身進程的實現(xiàn)方法

    今天小編就為大家分享一篇python 殺死自身進程的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Pydantic和.env文件管理環(huán)境配置

    Pydantic和.env文件管理環(huán)境配置

    Pydantic 是一個 Python 第三方包,本文主要介紹了Pydantic和.env文件管理環(huán)境配置,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • python用pdfplumber提取pdf表格數(shù)據(jù)并保存到excel文件中

    python用pdfplumber提取pdf表格數(shù)據(jù)并保存到excel文件中

    在實際研究中我們經(jīng)常需要獲取大量數(shù)據(jù),而這些數(shù)據(jù)很大一部分以pdf表格的形式呈現(xiàn),如公司年報、發(fā)行上市公告等,下面這篇文章主要給大家介紹了關(guān)于利用python提取pdf表格數(shù)據(jù)并保存到excel文件中的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Pycharm搭建Django項目詳細教程(看完這一篇就夠了)

    Pycharm搭建Django項目詳細教程(看完這一篇就夠了)

    這篇文章主要給大家介紹了關(guān)于Pycharm搭建Django項目的詳細教程,想要學(xué)習(xí)的小伙伴看完這一篇就夠了,pycharm是一種Python?IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,需要的朋友可以參考下
    2023-11-11
  • python找出一個列表中相同元素的多個索引實例

    python找出一個列表中相同元素的多個索引實例

    今天小編就為大家分享一篇python找出一個列表中相同元素的多個索引實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • django將數(shù)組傳遞給前臺模板的方法

    django將數(shù)組傳遞給前臺模板的方法

    今天小編就為大家分享一篇django將數(shù)組傳遞給前臺模板的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Matplotlib繪制雷達圖和三維圖的示例代碼

    Matplotlib繪制雷達圖和三維圖的示例代碼

    這篇文章主要介紹了Matplotlib繪制雷達圖和三維圖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評論

南岸区| 临城县| 鄂托克前旗| 称多县| 湖北省| 太白县| 陈巴尔虎旗| 大厂| 光泽县| 琼中| 固镇县| 三亚市| 五家渠市| 潮州市| 略阳县| 汉沽区| 沧州市| 交口县| 阿坝| 红原县| 长武县| 当阳市| 利川市| 安阳市| 衡东县| 兰考县| 桐柏县| 疏勒县| 芦山县| 侯马市| 石柱| 汉川市| 贡嘎县| 高州市| 汪清县| 丹巴县| 富蕴县| 黔西县| 台北市| 通海县| 苏尼特右旗|