中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

python能不能用urllib與服務端交互例如發(fā)送和接收數(shù)據(jù)-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“python 能不能用urllib與服務端交互例如發(fā)送和接收數(shù)據(jù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python 能不能用urllib與服務端交互例如發(fā)送和接收數(shù)據(jù)”吧!

10年積累的成都網(wǎng)站建設、網(wǎng)站設計經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先制作網(wǎng)站后付款的網(wǎng)站建設流程,更有紅橋免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

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

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

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

  • request:最基本的HTTP請求模塊,可以用來發(fā)送HTTP請求,并接收服務端的響應數(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請求,并獲取相應數(shù)據(jù)。

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

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

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

運行結果如圖 所示。

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

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

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

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

<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)) 
# 輸出響應狀態(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代碼(經(jīng)過utf-8解碼) 
print(response.read().decode('utf-8'))

運行結果如圖所示。

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

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

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

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

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

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

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

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

到此,相信大家對“python 能不能用urllib與服務端交互例如發(fā)送和接收數(shù)據(jù)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

網(wǎng)站名稱:python能不能用urllib與服務端交互例如發(fā)送和接收數(shù)據(jù)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://m.rwnh.cn/article10/esjgo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化建站公司、品牌網(wǎng)站建設、服務器托管、全網(wǎng)營銷推廣、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
平阳县| 阳泉市| 诏安县| 和田市| 崇礼县| 汉阴县| 东源县| 甘泉县| 扎兰屯市| 积石山| 修武县| 泽州县| 康乐县| 苍溪县| 梁平县| 咸阳市| 邳州市| 固安县| 平塘县| 犍为县| 北流市| 崇明县| 呼图壁县| 澄迈县| 吉林市| 永兴县| 越西县| 二连浩特市| 资溪县| 定兴县| 勃利县| 客服| 隆子县| 牙克石市| 宁阳县| 西丰县| 图们市| 云龙县| 乌拉特中旗| 建昌县| 应城市|