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

python?requests模塊封裝詳解

 更新時(shí)間:2023年09月05日 15:52:52   作者:純之風(fēng)  
requests是一個(gè)常用的HTTP請(qǐng)求庫(kù),可以方便地向網(wǎng)站發(fā)送HTTP請(qǐng)求,并獲取響應(yīng)結(jié)果,本文主要和大家介紹一下requests模塊的使用與封裝,需要的可以參考下

一、requests簡(jiǎn)介

requests是一個(gè)常用的HTTP請(qǐng)求庫(kù),可以方便地向網(wǎng)站發(fā)送HTTP請(qǐng)求,并獲取響應(yīng)結(jié)果; requests模塊比 urllib 模塊更簡(jiǎn)潔;使用 requests發(fā)送HTTP請(qǐng)求需要先導(dǎo)入requests模塊,導(dǎo)入后就可以發(fā)送HTTP請(qǐng)求,使用requests提供的方法向指定url發(fā)送HTTP請(qǐng)求

關(guān)于python開發(fā)的HTTP庫(kù),在Python內(nèi)置模塊的基礎(chǔ)上進(jìn)行了高度的封裝,從而使得Pythoner進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),變得美好了許多,使用requests可以完成瀏覽器任何操作

二、請(qǐng)求類型

HTTP的請(qǐng)求類型有POST、GET、PUT、DELETE、HEAD以及OPTIONS,其中POST和GET是最常使用的

三、使用demo

# 導(dǎo)入requests包  
import?requests  
# 發(fā)送請(qǐng)求  
response?=?requests.get('https://www.runoob.com/')  
# 返回網(wǎng)頁(yè)內(nèi)容  
print(response.text)

注意:每次調(diào)用requests請(qǐng)求之后,會(huì)返回一個(gè)response對(duì)象,該對(duì)象包含了具體的響應(yīng)信息,如狀態(tài)碼、響應(yīng)頭、響應(yīng)內(nèi)容等:

  • response.text:獲取文本響應(yīng)內(nèi)容,即網(wǎng)頁(yè)源代碼(str格式)
  • response.context:獲取二進(jìn)制響應(yīng)內(nèi)容,即網(wǎng)頁(yè)源代碼(bytes格式)
  • response.json():獲取JSON響應(yīng)內(nèi)容
  • response.raw:獲取原始響應(yīng)內(nèi)容
  • response.status_code:響應(yīng)狀態(tài)碼,返回值為200表示網(wǎng)絡(luò)請(qǐng)求正常
  • response.encoding:編碼方式
  • response.apparent_encoding:從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼方式
  • response.request:請(qǐng)求對(duì)象;主要包括url、method、headers等
  • response.url:輸出請(qǐng)求的網(wǎng)址鏈接
print(response.status_code)  # 獲取響應(yīng)狀態(tài)碼
print(response.headers)  # 獲取響應(yīng)頭
print(response.content)  # 獲取響應(yīng)內(nèi)容

四、個(gè)人風(fēng)格requests封裝

import retrying # 需手動(dòng)安裝
class HTTP(object):
    """
    requests模塊封裝使用:
    import HTTP
    # post調(diào)用時(shí)格式為json格式
    headers = {
        "Content-Type": "application/json",
        "Charset": "UTF-8"
    }
    result = HTTP.get(url, params)
    result = HTTP.post(url, data=json.dumps(payload), headers=header)
    """
    @staticmethod
    def __requests(method, url, **kwargs):
        """
        發(fā)送http請(qǐng)求
        @param url: 接口url
        @param method: http請(qǐng)求方法
        @param kwargs: 接受request原生的關(guān)鍵字參數(shù)
        @return 響應(yīng)對(duì)象
        """
        resp = getattr(requests, method)(url, **kwargs)
        if resp.status_code == 200:
            result = resp.json()
            return result
        raise Exception('fail:{},url:{},method:{}'.format(json.dumps(resp.content),url,method))
    @retrying.retry(stop_max_attempt_number=3)
    def get(self, url, params=None, **kwargs):
        return self.__requests('get', url, params=params, **kwargs)
    @retrying.retry(stop_max_attempt_number=3)
    def post(self, url, data, **kwargs):
        return self.__requests('post', url, data=data, **kwargs)
    @retrying.retry(stop_max_attempt_number=3)
    def put(self, url, data=None, **kwargs):
        return self.__requests('put', url, data=data, **kwargs)
    @retrying.retry(stop_max_attempt_number=3)
    def delete(self, url, **kwargs):
        return self.__requests('delete', url, **kwargs)
    @retrying.retry(stop_max_attempt_number=3)
    def head(self, url, **kwargs):
        return self.__requests('head', url, **kwargs)
    @retrying.retry(stop_max_attempt_number=3)
    def patch(self, url, data=None, **kwargs):
        return self.__requests('patch', url, data=data, **kwargs)

五、實(shí)例demo

GET請(qǐng)求

在URL中常見?符號(hào),httpbin.org/get?key=val這種帶有?傳遞關(guān)鍵字參數(shù)的方式,requests可以通過(guò)params實(shí)現(xiàn)

condition_params = {'k1':'v1', 'k2':'v2', 'k3':None, 'k4':['v4','v5']}  
r = requets.get('http://httpbin.org/get', params=condition_params)

注意:

  • 字典中鍵值為None的鍵不會(huì)被拼接添加到url中
  • 多個(gè)鍵值中間用&符號(hào)拼接
  • 鍵值可是列表例如上例中'k4'
  • 執(zhí)行結(jié)果print(r.url) --> httpbin.org/get?k1=v1&k…

POST請(qǐng)求

import requests
import json
# 指定post請(qǐng)求時(shí)的url
url = 'https://api.github.com/some/endpoint'  
# 需要上傳或發(fā)送post請(qǐng)求的數(shù)據(jù)
payload = {'some': 'data'} 
# 指定請(qǐng)求格式為json格式
headers = {'content-type': 'application/json'}  
# 發(fā)送請(qǐng)求時(shí)將字典轉(zhuǎn)換為json格式數(shù)據(jù)
res = requests.post(url, data=json.dumps(payload), headers=headers)  

到此這篇關(guān)于python requests模塊封裝詳解的文章就介紹到這了,更多相關(guān)python requests內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python爬取網(wǎng)頁(yè)轉(zhuǎn)換為PDF文件

    python爬取網(wǎng)頁(yè)轉(zhuǎn)換為PDF文件

    這篇文章主要為大家詳細(xì)介紹了python爬取網(wǎng)頁(yè)轉(zhuǎn)換為PDF文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 通過(guò)Python實(shí)現(xiàn)Payload分離免殺過(guò)程詳解

    通過(guò)Python實(shí)現(xiàn)Payload分離免殺過(guò)程詳解

    這篇文章主要介紹了通過(guò)Python實(shí)現(xiàn)Payload分離免殺過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 在IPython中進(jìn)行Python程序執(zhí)行時(shí)間的測(cè)量方法

    在IPython中進(jìn)行Python程序執(zhí)行時(shí)間的測(cè)量方法

    今天小編就為大家分享一篇在IPython中進(jìn)行Python程序執(zhí)行時(shí)間的測(cè)量方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python基于itchat實(shí)現(xiàn)微信群消息同步機(jī)器人

    python基于itchat實(shí)現(xiàn)微信群消息同步機(jī)器人

    本篇文章主要介紹了python基于itchat實(shí)現(xiàn)微信群消息同步機(jī)器人,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Python求兩個(gè)list的差集、交集與并集的方法

    Python求兩個(gè)list的差集、交集與并集的方法

    這篇文章主要介紹了Python求兩個(gè)list的差集、交集與并集的方法,是Python集合數(shù)組操作中常用的技巧,需要的朋友可以參考下
    2014-11-11
  • Python zip()函數(shù)的用法和技巧(解鎖并行迭代的魔力)

    Python zip()函數(shù)的用法和技巧(解鎖并行迭代的魔力)

    zip()函數(shù)是Python中一個(gè)簡(jiǎn)潔而強(qiáng)大的工具,它通過(guò)并行迭代多個(gè)序列,讓代碼更加優(yōu)雅和易讀,這篇文章給大家介紹Python zip()函數(shù)完全指南:解鎖并行迭代的魔力,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • python3下使用cv2.imwrite存儲(chǔ)帶有中文路徑圖片的方法

    python3下使用cv2.imwrite存儲(chǔ)帶有中文路徑圖片的方法

    今天小編就為大家分享一篇python3下使用cv2.imwrite存儲(chǔ)帶有中文路徑圖片的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python中的可變變量與不可變變量的使用

    Python中的可變變量與不可變變量的使用

    本文主要介紹了Python中的可變變量與不可變變量的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • kafka-python批量發(fā)送數(shù)據(jù)的實(shí)例

    kafka-python批量發(fā)送數(shù)據(jù)的實(shí)例

    今天小編就為大家分享一篇kafka-python批量發(fā)送數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python Excel處理庫(kù)openpyxl使用詳解

    Python Excel處理庫(kù)openpyxl使用詳解

    openpyxl是一個(gè)第三方庫(kù),可以處理xlsx格式的Excel文件。這篇文章主要介紹了Python Excel處理庫(kù)openpyxl使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05

最新評(píng)論

石城县| 洪雅县| 织金县| 甘孜县| 靖边县| 泰顺县| 航空| 青阳县| 乌什县| 东乡族自治县| 同江市| 鄂尔多斯市| 邯郸县| 湖北省| 新竹县| 哈尔滨市| 呼伦贝尔市| 项城市| 昌宁县| 阿拉善左旗| 玉田县| 济阳县| 乌兰县| 股票| 商洛市| 天祝| 鲁甸县| 保康县| 江城| 榆树市| 军事| 济源市| 普格县| 商南县| 平远县| 同德县| 荃湾区| 通化县| 茌平县| 嘉峪关市| 水富县|