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

Python urllib3軟件包的使用說(shuō)明

 更新時(shí)間:2020年11月18日 09:27:52   作者:易生一世  
這篇文章主要介紹了Python urllib3軟件包的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

urllib3是一款Python 3的HTTP客戶端。

Python標(biāo)準(zhǔn)庫(kù)提供了urllib。在Python 2中,另外提供了urllib2;而在Python 3中,重構(gòu)了urllib和urllib2到標(biāo)準(zhǔn)庫(kù)urllib,并另外提供了urllib3。

1. urllib3的特性

線程安全

連接緩沖池

客戶端SSL/TLS驗(yàn)證

文件上傳

請(qǐng)求重試

HTTP重定向

支持gzip和deflate encoding

支持HTTP和SOCKS的代理

2. 安裝

urllib3不是Python 3的標(biāo)準(zhǔn)庫(kù),要使用需要另外安裝,pip命令如下:

pip install urllib3

3. 用法

1) HTTP GET請(qǐng)求

>>> import urllib3
>>> http = urllib3.PoolManager()
>>> r = http.request('GET', 'http://httpbin.org/robots.txt')
>>> r.status
200
>>> r.data
...
>>> r.headers
...

注意:任何HTTP請(qǐng)求,只有通過(guò)PoolManager對(duì)象發(fā)出,才能夠提供連接緩沖池和線程安全特性。

任何請(qǐng)求的返回對(duì)象都是HTTPResponse對(duì)象,其中包含status, data和headers三個(gè)屬性。

2) HTTP POST請(qǐng)求

>>> import urllib3
>>> http = urllib3.PoolManager()
>>> r = http.request('POST', 'http://httpbin.org/post', fields={'hello': 'Xiangbin'})
>>> r.status
200
>>> r.data
...
>>> r.headers
...

3) JSON響應(yīng)的處理

>>> import urllib3
>>> import json
 
>>> http = urllib3.PoolManager()
>>> r = http.request('GET', 'http://httpbin.org/ip')
>>> r.data
b'{\n "origin": "10.23.1.37"\n}\n'
>>> json.loads(r.data.decode('utf-8'))
{'origin': '127.0.0.1'}

注意:使用json的loads()方法

4) 流式響應(yīng)的處理

>>> import urllib3
>>> http = urllib3.PoolManager()
>>> r = http.request('GET', 'http://httpbin.org/bytes/1024', preload_content=False)
>>> for chunk in r.stream(32):
...   print(chunk)
...
>>> r.release_conn()

注意:preload_content=False表示流式處理響應(yīng)數(shù)據(jù)。

處理stream()方法讀取響應(yīng)數(shù)據(jù)之外,還可以使用read()方法,示例如下:

>>> import urllib3
>>> http = urllib3.PoolManager()
>>> r = http.request('GET', 'http://httpbin.org/bytes/1024', preload_content=False)
>>> r.read(4)
b'\x88\x1f\x8b\xe5' 
>>> r.release_conn()

5) 請(qǐng)求帶參數(shù)

>>> r = http.request('GET', 'http://httpbin.org/headers', fields={'hello': 'Xiangbin'}, headers={'X-Something': 'value'})

對(duì)于POST和PUT方法,需要將參數(shù)編碼后,這樣才可以追加到URL,示例如下:

>>> from urllib.parse import urlencode
>>> encoded_args = urlencode({'arg': 'value'})
>>> url = 'http://httpbin.org/post?' + encoded_args
>>> r = http.request('POST', url)

當(dāng)然,最好還是以fields參數(shù)形式,urllib3將自動(dòng)編碼,示例如下:

>>> r = http.request('POST', 'http://httpbin.org/post', fields={'hello': 'Xiangbin'})

使用JSON模塊,還可以以body形式發(fā)送請(qǐng)求參數(shù),示例如下:

>>> import json
>>> data = {'Hello': 'Xiangbin'}
>>> encoded_data = json.dumps(data).encode('utf-8')
>>> r = http.request('POST', 'http://httpbin.org/post', body=encoded_data, headers={'Content-Type': 'application/json'})
>>> json.loads(r.data.decode('utf-8'))['json']
{'Hello': 'Xiangbin'}

6) 上傳文件

文本文件

>>> with open('example.txt') as fp:
...   file_data = fp.read()
>>> r = http.request(
...   'POST',
...   'http://httpbin.org/post',
...   fields={
...     'filefield': ('example.txt', file_data, 'text/plain'),
...   })
>>> json.loads(r.data.decode('utf-8'))['files']
{'filefield': '...'}

注意:上傳文件必須使用POST方法。

二進(jìn)制文件

>>> with open('example.jpg', 'rb') as fp:
...   binary_data = fp.read()
>>> r = http.request(
...   'POST',
...   'http://httpbin.org/post',
...   body=binary_data,
...   headers={'Content-Type': 'image/jpeg'})
>>> json.loads(r.data.decode('utf-8'))['data']
b'...'
 

補(bǔ)充知識(shí):Python的requests軟件包詳解

requests是一款Python的第三方HTTP類(lèi)庫(kù),便于進(jìn)行HTTP訪問(wèn)。

1. requests的特性

能夠發(fā)送HTTP 1.1請(qǐng)求

無(wú)需手工為GET方法設(shè)置URL的請(qǐng)求參數(shù),無(wú)需手工為POST方法組編碼表單形式

借助于urllib3實(shí)現(xiàn)HTTP請(qǐng)求的連接會(huì)話緩存

支持Python 2.6, 2.7, 3.3-3.7

2. requests的安裝

requests不是Python標(biāo)準(zhǔn)庫(kù),需要使用PIP安裝,命令如下:

pip install requests

安裝過(guò)程如下:

C:\Sam\works>pip install requests
Collecting requests
 Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
  100% |████████████████████████████████| 61kB 17kB/s
Collecting certifi>=2017.4.17 (from requests)
 Downloading https://files.pythonhosted.org/packages/18/b0/8146a4f8dd402f60744fa380bc73ca47303cccf8b9190fd16a827281eac2/certifi-2019.9.11-py2.py3-none-any.whl (154kB)
  100% |████████████████████████████████| 163kB 18kB/s
Collecting idna<2.9,>=2.5 (from requests)
 Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
  100% |████████████████████████████████| 61kB 10kB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
 Downloading https://files.pythonhosted.org/packages/e0/da/55f51ea951e1b7c63a579c09dd7db825bb730ec1fe9c0180fc77bfb31448/urllib3-1.25.6-py2.py3-none-any.whl (125kB)
  100% |████████████████████████████████| 133kB 32kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
 Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
  100% |████████████████████████████████| 143kB 48kB/s
Installing collected packages: certifi, idna, urllib3, chardet, requests
Successfully installed certifi-2019.9.11 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.6
You are using pip version 19.0.3, however version 19.3.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

3. requests的接口

1) Main interfaces

requests.request()
requests.head()
requests.get('url', params={'key1':'value1', 'key2':'value2'},headers={'user-agent': '...'}, cookies={'name1':'value2'})
requests.post('url', data={'key':'value'})
requests.post('url', json={'key':'value'})
requests.post('url', files={'uploaded_file': open('report.xls', 'rb')})
requests.post('url', files={'uploaded_file': ('report.xls', open('report.xls', 'rb'), 'application/excel', {'Expires': '0'})})
requests.post('url', files={'uploaded_file': ('temp.txt', 'one line\ntwo lines\n')})
requests.put('url', data={'key':'value'})
requests.patch()
requests.delete('url')
def getGithub():
  github_url = 'https://api.github.com/user/repos'
  myresponse = requests.get(github_url, auth=('champagne', 'myPassword'))
  print(myresponse.json())
def postGithub():
  github_url = 'https://api.github.com/user/repos'
  data = json.dumps({'name':'python test', 'description':'a python test repo'})
  myresponse = requests.post(github_url, data, auth=('champagne', 'myPassword'))
  print(myresponse.text)

2) requests.Session類(lèi)

import requests

requests.Session()

3) requests.Request類(lèi)

import requests

requests.Request('GET', 'http://httpbin.org/get')

4) requests.PreparedRequest類(lèi)

import requests
req = requests.Request('GET', 'http://httpbin.org/get')
preq = req.prepare()

5) requests.Response類(lèi)

import requests
r = requests.get('https://api.github.com/events')
r.headers['content-type'] #'application/json;charset=utf8'
r.url
r.status_code #200==requests.codes.ok
r.encoding #'utf-8' by default
r.raw #raw content
r.text #text content
r.content #binary content
r.json()#json content, recommended
r.cookies['a_key']

注意:調(diào)用json()方法,如果返回結(jié)果不是有效的JSON數(shù)據(jù),則拋出ValueError異常。

6) requests.adapters.BaseAdapter類(lèi)

7) requests.adapters.HTTPAdapter類(lèi)

requests提供的使用urllib3的HTTP Adapter

以上這篇Python urllib3軟件包的使用說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python詳細(xì)講解圖像處理的而兩種庫(kù)OpenCV和Pillow

    Python詳細(xì)講解圖像處理的而兩種庫(kù)OpenCV和Pillow

    這篇文章介紹了Python使用OpenCV與Pillow分別進(jìn)行圖像處理的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解

    Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解

    這篇文章主要介紹了Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python實(shí)現(xiàn)按當(dāng)前日期(年、月、日)創(chuàng)建多級(jí)目錄的方法

    Python實(shí)現(xiàn)按當(dāng)前日期(年、月、日)創(chuàng)建多級(jí)目錄的方法

    這篇文章主要介紹了Python 按當(dāng)前日期(年、月、日)創(chuàng)建多級(jí)目錄的方法,實(shí)現(xiàn)代碼很簡(jiǎn)單,需要的朋友可以參考下
    2018-04-04
  • python遍歷字符串中每一個(gè)字符的4種方式

    python遍歷字符串中每一個(gè)字符的4種方式

    很多計(jì)算過(guò)程都需要每次從一個(gè)字符串中取一個(gè)字符,下面這篇文章主要給大家介紹了關(guān)于python遍歷字符串中每一個(gè)字符的4種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 深入分析在Python模塊頂層運(yùn)行的代碼引起的一個(gè)Bug

    深入分析在Python模塊頂層運(yùn)行的代碼引起的一個(gè)Bug

    幾個(gè)星期前, 我的同事跑過(guò)來(lái), 說(shuō)發(fā)現(xiàn)一個(gè)奇怪的Bug: 在使用Python的subprocess運(yùn)行子進(jìn)程時(shí), 當(dāng)子進(jìn)程運(yùn)行失敗時(shí)居然沒(méi)有拋出錯(cuò)誤!
    2014-07-07
  • 用Python把csv文件批量修改編碼為UTF-8格式并轉(zhuǎn)為Excel格式的方法

    用Python把csv文件批量修改編碼為UTF-8格式并轉(zhuǎn)為Excel格式的方法

    有時(shí)候用excel打開(kāi)一個(gè)csv文件,中文全部顯示亂碼,然后手動(dòng)用notepad++打開(kāi),修改編碼為utf-8并保存后,再用excel打開(kāi)顯示正常,本文將給大家介紹一下用Python把csv文件批量修改編碼為UTF-8格式并轉(zhuǎn)為Excel格式的方法,需要的朋友可以參考下
    2023-09-09
  • Python復(fù)制Excel帶有條件格式的單元格sheet實(shí)現(xiàn)步驟

    Python復(fù)制Excel帶有條件格式的單元格sheet實(shí)現(xiàn)步驟

    這篇文章主要為大家介紹了Python復(fù)制Excel帶有條件格式的單元格sheet實(shí)現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • ython字符串處理實(shí)用技巧分享

    ython字符串處理實(shí)用技巧分享

    在日常編程中,字符串處理是一個(gè)非常常見(jiàn)的任務(wù),因此掌握一些實(shí)用的技巧能夠提高代碼的效率和可讀性,本文將總結(jié)一些 Python 字符串處理的實(shí)用技巧,并通過(guò)代碼實(shí)例進(jìn)行演示,需要的朋友可以參考下
    2024-05-05
  • Pycharm配置Qt Designer及Pyuic的實(shí)現(xiàn)方法

    Pycharm配置Qt Designer及Pyuic的實(shí)現(xiàn)方法

    本文介紹了如何安裝Qt designer和Pyuic以及他們的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python爬不同圖片分別保存在不同文件夾中的實(shí)現(xiàn)

    python爬不同圖片分別保存在不同文件夾中的實(shí)現(xiàn)

    這篇文章主要介紹了python爬不同圖片分別保存在不同文件夾中的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

翁牛特旗| 盐源县| 麦盖提县| 三门县| 英超| 乳山市| 安丘市| 凯里市| 获嘉县| 吴江市| 武宣县| 鄄城县| 庄河市| 建德市| 广水市| 焉耆| 福州市| 长沙市| 雷波县| 彭水| 祁东县| 内江市| 岑溪市| 邮箱| 讷河市| 山阴县| 廊坊市| 新竹县| 涡阳县| 兴城市| 神池县| 米泉市| 天镇县| 共和县| 乌海市| 府谷县| 荥经县| 石城县| 西乌珠穆沁旗| 宁夏| 蒙城县|