国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對python3 urllib包與http包的使用詳解

2020-01-04 15:07:34
字體:
來源:轉載
供稿:網友

urllib包和http包都是面向HTTP協議的。其中urllib主要用于處理 URL,使用urllib操作URL可以像使用和打開本地文件一樣地操作。而 http包則實現了對 HTTP協議的封裝,是urllib.request模塊的底層。

1.urllib包簡介

2. http 包簡介

1.urllib包簡介

urllib包主要模塊有:

1.urllib.request -----用于打開 URL網址;

2.urllib.error ---------定義了常見的urllib.request會引發的異常;

3.urllib.parse---------用于解析 URL;

具體方法:

urllib.request.urlopen( url,data,proxies ) :用于打開 url

參數如下:

url:要進行操作的 URL地址

data:可選項。向URL 傳遞的數據。

proxies:可選項。使用的代理地址

import urllib.requesturl = 'http://www.baidu.com'   #網頁為百度首頁respone = urllib.request.urlopen(url) #打開url地址,并返回一個 HTTPRespone實例html = respone.read().decode('utf-8') #調用實例的 read()方法,并用 utf-8進行解碼處理。就得出完整的百度的HTML文件print(html) 

部分打印結果:

<html><head>  <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge">	<meta content="always" name="referrer"> <meta name="theme-color" content="#2932e1"> <link rel="shortcut icon" href="/favicon.ico" rel="external nofollow" type="image/x-icon" /> <link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" rel="external nofollow" <link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg" rel="external nofollow" >

urllib.request.urlretrieve(url,filename,reporthook,data) :用于將 URL的HTML文件下載并保存為本地文件

參數如下:

url:要下載的網頁

filename:保存在主機的路徑,可選項。

reporthook:一個回調函數,可選項。

data:發送的數據,一般用于 post,可選項。

特別:關于urlretrieve()的回調函數reporthook:可以用來顯示下載的進度,幾乎已經封裝好

import urllib.requestdef callbackfunc(blocknum, blocksize, totalsize): #這三個參數是由 urlretrieve自動賦值的 '''回調函數 @blocknum: 已經下載的數據塊 @blocksize: 數據塊的大小 @totalsize: 遠程文件的大小 ''' percent = 100.0 * blocknum * blocksize / totalsize if percent > 100:  percent = 100 print( "%.2f%%"% percent) #保留兩位小數url = 'http://www.sina.com'local = 'd://sina.html'        #下載的html文件保存在 d盤的sina.html里urllib.request.urlretrieve(url,local,callbackfunc) #沒下載完一個數據塊,就會執行回調函數一次

執行結果:

//只顯示局部 0.00% 1.38% 2.76% 4.13% 5.51% 6.89% 

2. http包簡介

http包提供了 HTTP協議的一些功能,主要模塊有:

http.client --- 底層的 HTTP 協議的一些功能,可以為 urllib.request 模塊所用

http.server --- 提供了基于 socketserver模塊的基本 HTTP服務器類

http.cookies --- cookies 的管理工具

http.client :

HttpClient不是一個瀏覽器。它是一個客戶端的HTTP通信實現庫。HttpClient的目標是發送和接收HTTP報文。

兩個主要類(用于客戶端):

HTTPConnection :基于HTTP協議的客戶端,指定 URL(網址) 后,可以 發送請求報文 和 接收響應報文

HTTPRespone :基于 HTTP 協議的服務端回應。一旦用 HTTPConnection 成功連接,可以調用相關方法返回該實例(HTTPRequest實例)。

(1)HTTPConnection 的方法:

構造方法: HTTPConnection( host,port,[timeout] ) 返回一個HTTPConnection 實例

host:表示主機域名或 ip 地址

port:表示端口

timeout:阻塞操作將會在給定時間后超時。可選項

發送請求報文方法:HTTPConnection.request( method,url,body =None,headers = {} )

method:發送的操作,一般為 GET 或者 POST

url :進行操作的 url

body :所發送的數據

headers:發送的 HTTP頭部,是一個字典類型

獲取響應報文方法:HTTPConnection.getrespone( )

關閉與服務器的連接: HTTPConne.close()

發送一個頭部:HTTPConnection.putheader( header,args[ ] ) #頭部以一個字典方式發送

發送一個空白行到服務器,標志頭部Header的結束:HTTPConnection.endheaders( )

發送數據到服務器:HTTPConnection.send( data ) ,應該在endheaders()之后 和 getrespone()之前調用。

(2)HTTPRespone:

HTTPRespone對象:一旦用 HTTPConnection 成功連接,可以調用HTTPConnection.getrespone()返回該實例(HTTPRequest實例)。

HTTPRespone.getheader(name) :返回頭部中的 name 字段對應的值

HTTPRespone.getheaders( ) :以元組的方式返回整個頭部的信息

HTTPRespone.read() :返回響應報文中的body部分,也即正文部分

HTTPRespone.status #返回狀態碼

HTTPRespone.version #返回 HTTP協議版本

http 包應用實例 。

from http.client import HTTPConnectioncon = HTTPConnection('www.baidu.com',80)con.request('GET','/')   #發送請求報文res = con.getresponse()   #獲取響應報文對象print(res.status) #200 (表示狀態碼)print(res.reason) #OK	 (表示狀態碼對應的意義)print(res.read().decode('utf-8')) #打印www.baidu.com的html

以上這篇對python3 urllib包與http包的使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 象州县| 昭通市| 大港区| 丰原市| 吉林省| 新闻| 吉木萨尔县| 柯坪县| 兴业县| 嫩江县| 遵义市| 汾阳市| 东平县| 恩施市| 德格县| 元阳县| 巴青县| 濮阳市| 正镶白旗| 沧州市| 溆浦县| 阿勒泰市| 揭西县| 博白县| 吴堡县| 防城港市| 太仓市| 扎囊县| 昂仁县| 无锡市| 江安县| 鄂温| 宁晋县| 五大连池市| 南皮县| 湟中县| 通许县| 时尚| 忻州市| 文成县| 仁寿县|