濮阳杆衣贸易有限公司

主頁 > 知識庫 > python 如何用urllib與服務端交互(發(fā)送和接收數據)

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

熱門標簽:正安縣地圖標注app 阿里電話機器人對話 電銷機器人系統廠家鄭州 qt百度地圖標注 400電話申請資格 地圖地圖標注有嘆號 螳螂科技外呼系統怎么用 遼寧智能外呼系統需要多少錢 舉辦過冬奧會的城市地圖標注

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

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

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

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

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

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

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

運行結果如圖 所示。

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

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

這段代碼會輸出如下的結果:

class 'http.client.HTTPResponse'> 

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

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

運行結果如圖所示。

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

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

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

import urllib.request 
# 將表單數據轉換為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) 
# 輸出響應數據 
print(response.read().decode('utf-8')) 

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

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

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

您可能感興趣的文章:
  • python thrift搭建服務端和客戶端測試程序
  • python thrift 實現 單端口多服務的過程
  • python3.7通過thrift操作hbase的示例代碼
  • python使用thrift教程的方法示例
  • python利用thrift服務讀取hbase數據的方法
  • Python連接Java Socket服務端的實現方法
  • python 實現客戶端與服務端的通信
  • python網絡編程socket實現服務端、客戶端操作詳解
  • Python Websocket服務端通信的使用示例
  • python實現Thrift服務端的方法

標簽:合肥 阜新 濟源 昭通 興安盟 淘寶好評回訪 隨州 信陽

巨人網絡通訊聲明:本文標題《python 如何用urllib與服務端交互(發(fā)送和接收數據)》,本文關鍵詞  python,如,何用,urllib,與,服務,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python 如何用urllib與服務端交互(發(fā)送和接收數據)》相關的同類信息!
  • 本頁收集關于python 如何用urllib與服務端交互(發(fā)送和接收數據)的相關信息資訊供網民參考!
  • 推薦文章
    获嘉县| 红原县| 固始县| 剑阁县| 义马市| 夏津县| 神木县| 海安县| 潞西市| 马尔康县| 江西省| 东城区| 武义县| 永靖县| 桦甸市| 淮滨县| 延川县| 财经| 方山县| 巴彦淖尔市| 翁源县| 西华县| 嵊州市| 肇东市| 邮箱| 通州区| 搜索| 科技| 桃园县| 洛扎县| 通许县| 安溪县| 高雄县| 伽师县| 宜昌市| 中卫市| 新乡县| 蒙自县| 新疆| 怀化市| 秦安县|