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

python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

 更新時間:2021年03月04日 14:41:27   作者:極客起源  
這篇文章主要介紹了python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù)),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

urllib是Python3中內(nèi)置的HTTP請求庫,不需要單獨安裝,官方文檔鏈接如下:https://docs.python.org/3/library/urllib.html從官方文檔可以看出,urllib包含4個模塊,如圖所示。

這4個模塊的功能描述如下:

  • request:最基本的HTTP請求模塊,可以用來發(fā)送HTTP請求,并接收服務(wù)端的響應(yīng)數(shù)據(jù)。這個過程就像在瀏覽器地址欄輸入URL,然后按Enter鍵一樣。
  • error:異常處理模塊,如果出現(xiàn)請求錯誤,我們可以捕獲這些異常,然后根據(jù)實際情況,或者進行重試,或者直接忽略,或進行其他操作。
  • parse:工具模塊,提供了很多處理URL的API,如拆分、解析、合并等。
  • robotparser:主要用來識別網(wǎng)站的robots.txt文件,然后判斷哪些網(wǎng)站可以抓取,哪些網(wǎng)站不可以抓取。

本文主要介紹如何通過urllib發(fā)送HTTP GET請求和HTTP POST請求,并獲取相應(yīng)數(shù)據(jù)。

1. 用urlopen函數(shù)發(fā)送HTTP GET請求

urllib最基本的一個功能就是向服務(wù)端發(fā)送HTTP請求,然后接收服務(wù)端返回的響應(yīng)數(shù)據(jù)。這個功能只需要通過urlopen函數(shù)就可以搞定。例如,下面的代碼向百度發(fā)送HTTP GET請求,然后輸出服務(wù)端的響應(yīng)結(jié)果。

import urllib.request 
response=urllib.request.urlopen('https://baidu.com') 
# 將服務(wù)端的響應(yīng)數(shù)據(jù)用utf-8解碼 
print(response.read().decode('utf-8')) 

運行結(jié)果如圖 所示。

我們可以看到,使用urllib與服務(wù)端交互是非常容易的,除了import語句外,真正與業(yè)務(wù)有關(guān)的代碼只有2行,就完成了整個與服務(wù)端交互的過程。其實這個過程已經(jīng)完成了爬蟲的第一步,就是從服務(wù)端獲取HTML代碼,然后就可以利用各種分析庫對HTML代碼進行解析,提取出我們感興趣的URL、文本、圖像等。其實urlopen函數(shù)返回的是一個對象,而read是這個對象的一個方法,可以利用type方法輸出這個對象的類型,當我們知道了對象類型后,就可以很容易知道這個對象中有哪些API,然后調(diào)用它們。

import urllib.request 
response=urllib.request.urlopen('https://baidu.com') 
print(type(response)) 

這段代碼會輸出如下的結(jié)果:

<class 'http.client.HTTPResponse'> 

現(xiàn)在我們了解到,urlopen函數(shù)返回的是HTTPResponse類型的對象,主要包含read、getheader、getheaders等方法,以及msg、version、status、debuglevel、closed等屬性。下面是一個實際的案例,用來演示了HTTPResponse對象中主要的方法和屬性的用法。

import urllib.request 
# 向京東商城發(fā)送HTTP GET請求,urlopen函數(shù)即可以使用http,也可以使用https 
response=urllib.request.urlopen('https://www.jd.com') 
# 輸出urlopen函數(shù)返回值的數(shù)據(jù)類型 
print('response的類型:',type(response)) 
# 輸出響應(yīng)狀態(tài)碼、響應(yīng)消息和HTTP版本 
print('status:',response.status,' msg:',response.msg,' version:', response.version) 
# 輸出所有的響應(yīng)頭信息 
print('headers:',response.getheaders()) 
# 輸出名為Content-Type的響應(yīng)頭信息 
print('headers.Content-Type',response.getheader('Content-Type')) 
# 輸出京東商城首頁所有的HTML代碼(經(jīng)過utf-8解碼) 
print(response.read().decode('utf-8')) 

運行結(jié)果如圖所示。

2. 用urlopen函數(shù)發(fā)送HTTP POST請求

urlopen函數(shù)默認情況下發(fā)送的是HTTP GET請求,如果要發(fā)送HTTP POST請求,需要使用data命名參數(shù),該參數(shù)是bytes類型,需要用bytes類將字符串形式的數(shù)據(jù)轉(zhuǎn)換為bytes類型。下面的例子

下面的例子向http://httpbin.org/post發(fā)送HTTP POST請求,并輸出返回結(jié)果。

import urllib.request 
# 將表單數(shù)據(jù)轉(zhuǎn)換為bytes類型,用utf-8編碼 
data=bytes(urllib.parse.urlencode({'name':'Bill','age':30}),encoding='utf-8') 
# 提交HTTP POST請求 
response=urllib.request.urlopen('http://httpbin.org/post',data=data) 
# 輸出響應(yīng)數(shù)據(jù) 
print(response.read().decode('utf-8')) 

這段代碼中一開始提供了一個字典形式的表單數(shù)據(jù),然后使用urlencode方法將字典類型的表單轉(zhuǎn)換為字符串形式的表單,接下來將字符串形式的表單按utf-8編碼轉(zhuǎn)換為bytes類型,這就是要傳給urlopen函數(shù)的data命名參數(shù)的值,要注意,一旦指定了data命名參數(shù),urlopen函數(shù)就會向服務(wù)端提交HTTP POST請求,這里并不需要顯式指定要提交的是POST請求。

本例將HTTP POST請求提交給了http://httpbin.org/post,這是一個用于測試HTTP POST請求的網(wǎng)址,如果請求成功,服務(wù)端會將HTTP POST請求信息原封不動地返回給客戶端。運行結(jié)果如圖所示。

以上就是python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))的詳細內(nèi)容,更多關(guān)于python 用urllib與服務(wù)端交互的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在Django的視圖中使用數(shù)據(jù)庫查詢的方法

    在Django的視圖中使用數(shù)據(jù)庫查詢的方法

    這篇文章主要介紹了在Django的視圖中使用數(shù)據(jù)庫查詢的方法,是Python的Django框架使用的基礎(chǔ)操作,需要的朋友可以參考下
    2015-07-07
  • Python編寫打字訓(xùn)練小程序

    Python編寫打字訓(xùn)練小程序

    這篇文章主要介紹了Python編寫打字訓(xùn)練小程序,需要的朋友可以參考下
    2019-09-09
  • Python實現(xiàn)RGB與HSI顏色空間的互換方式

    Python實現(xiàn)RGB與HSI顏色空間的互換方式

    今天小編就為大家分享一篇Python實現(xiàn)RGB與HSI顏色空間的互換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 使用Python實現(xiàn)PDF與SVG互轉(zhuǎn)

    使用Python實現(xiàn)PDF與SVG互轉(zhuǎn)

    SVG(可縮放矢量圖形)和PDF(便攜式文檔格式)是兩種常見且廣泛使用的文件格式,本文將詳細介紹如何使用?Python?實現(xiàn)?SVG?和?PDF?之間的相互轉(zhuǎn)換,感興趣的可以了解下
    2025-02-02
  • 使用PYTHON解析Wireshark的PCAP文件方法

    使用PYTHON解析Wireshark的PCAP文件方法

    今天小編就為大家分享一篇使用PYTHON解析Wireshark的PCAP文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法

    Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法

    這篇文章主要介紹了Python 中PyQt5 點擊主窗口彈出另一個窗口的實現(xiàn)方法,本文代碼實例圖文相結(jié)合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • python二維碼操作:對QRCode和MyQR入門詳解

    python二維碼操作:對QRCode和MyQR入門詳解

    今天小編就為大家分享一篇python二維碼操作:對QRCode和MyQR入門詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python自省及反射原理實例詳解

    Python自省及反射原理實例詳解

    這篇文章主要介紹了Python自省及反射原理實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • python中的itertools的使用詳解

    python中的itertools的使用詳解

    這篇文章主要介紹了python中的itertools的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python實現(xiàn)繁體中文與簡體中文相互轉(zhuǎn)換的方法示例

    Python實現(xiàn)繁體中文與簡體中文相互轉(zhuǎn)換的方法示例

    這篇文章主要介紹了Python實現(xiàn)繁體中文與簡體中文相互轉(zhuǎn)換的方法,涉及Python基于第三方模塊進行編碼轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12

最新評論

岢岚县| 浮梁县| 南安市| 茂名市| 岑溪市| 镇远县| 江都市| 庆云县| 江北区| 大方县| 曲麻莱县| 鱼台县| 萨迦县| 芷江| 安多县| 泾源县| 丹寨县| 肇东市| 伊通| 泰和县| 吐鲁番市| 南部县| 清新县| 大城县| 邵阳市| 巴里| 金堂县| 徐水县| 余干县| 鄂托克前旗| 林周县| 鄂伦春自治旗| 原阳县| 海南省| 新平| 清水河县| 江安县| 民勤县| 太和县| 凤山县| 邹城市|