欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

對(duì)python3 urllib包與http包的使用詳解

 更新時(shí)間:2018年05月10日 16:14:23   作者:ZJE_ANDY  
今天小編就為大家分享一篇對(duì)python3 urllib包與http包的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

urllib包和http包都是面向HTTP協(xié)議的。其中urllib主要用于處理 URL,使用urllib操作URL可以像使用和打開(kāi)本地文件一樣地操作。而 http包則實(shí)現(xiàn)了對(duì) HTTP協(xié)議的封裝,是urllib.request模塊的底層。

1.urllib包簡(jiǎn)介

2. http 包簡(jiǎn)介

1.urllib包簡(jiǎn)介

urllib包主要模塊有:

1.urllib.request -----用于打開(kāi) URL網(wǎng)址;

2.urllib.error ---------定義了常見(jiàn)的urllib.request會(huì)引發(fā)的異常;

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

具體方法:

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

參數(shù)如下:

url:要進(jìn)行操作的 URL地址

data:可選項(xiàng)。向URL 傳遞的數(shù)據(jù)。

proxies:可選項(xiàng)。使用的代理地址

import urllib.request
url = 'http://www.baidu.com'   #網(wǎng)頁(yè)為百度首頁(yè)
respone = urllib.request.urlopen(url) #打開(kāi)url地址,并返回一個(gè) HTTPRespone實(shí)例
html = respone.read().decode('utf-8') #調(diào)用實(shí)例的 read()方法,并用 utf-8進(jìn)行解碼處理。就得出完整的百度的HTML文件
print(html) 

部分打印結(jié)果:

<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" title="百度搜索" /> 
 <link rel="icon" sizes="any" mask  rel="external nofollow" >

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

參數(shù)如下:

url:要下載的網(wǎng)頁(yè)

filename:保存在主機(jī)的路徑,可選項(xiàng)。

reporthook:一個(gè)回調(diào)函數(shù),可選項(xiàng)。

data:發(fā)送的數(shù)據(jù),一般用于 post,可選項(xiàng)。

特別:關(guān)于urlretrieve()的回調(diào)函數(shù)reporthook:可以用來(lái)顯示下載的進(jìn)度,幾乎已經(jīng)封裝好

import urllib.request
def callbackfunc(blocknum, blocksize, totalsize): #這三個(gè)參數(shù)是由 urlretrieve自動(dòng)賦值的
 '''回調(diào)函數(shù)
 @blocknum: 已經(jīng)下載的數(shù)據(jù)塊
 @blocksize: 數(shù)據(jù)塊的大小
 @totalsize: 遠(yuǎn)程文件的大小
 '''
 percent = 100.0 * blocknum * blocksize / totalsize
 if percent > 100:
  percent = 100
 print( "%.2f%%"% percent) #保留兩位小數(shù)
url = 'http://www.sina.com'
local = 'd:\\sina.html'        #下載的html文件保存在 d盤(pán)的sina.html里
urllib.request.urlretrieve(url,local,callbackfunc) #沒(méi)下載完一個(gè)數(shù)據(jù)塊,就會(huì)執(zhí)行回調(diào)函數(shù)一次

執(zhí)行結(jié)果:

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

2. http包簡(jiǎn)介

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

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

http.server --- 提供了基于 socketserver模塊的基本 HTTP服務(wù)器類(lèi)

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

http.client :

HttpClient不是一個(gè)瀏覽器。它是一個(gè)客戶(hù)端的HTTP通信實(shí)現(xiàn)庫(kù)。HttpClient的目標(biāo)是發(fā)送和接收HTTP報(bào)文。

兩個(gè)主要類(lèi)(用于客戶(hù)端):

HTTPConnection :基于HTTP協(xié)議的客戶(hù)端,指定 URL(網(wǎng)址) 后,可以 發(fā)送請(qǐng)求報(bào)文 和 接收響應(yīng)報(bào)文

HTTPRespone :基于 HTTP 協(xié)議的服務(wù)端回應(yīng)。一旦用 HTTPConnection 成功連接,可以調(diào)用相關(guān)方法返回該實(shí)例(HTTPRequest實(shí)例)。

(1)HTTPConnection 的方法:

構(gòu)造方法: HTTPConnection( host,port,[timeout] ) 返回一個(gè)HTTPConnection 實(shí)例

host:表示主機(jī)域名或 ip 地址

port:表示端口

timeout:阻塞操作將會(huì)在給定時(shí)間后超時(shí)。可選項(xiàng)

發(fā)送請(qǐng)求報(bào)文方法:HTTPConnection.request( method,url,body =None,headers = {} )

method:發(fā)送的操作,一般為 GET 或者 POST

url :進(jìn)行操作的 url

body :所發(fā)送的數(shù)據(jù)

headers:發(fā)送的 HTTP頭部,是一個(gè)字典類(lèi)型

獲取響應(yīng)報(bào)文方法:HTTPConnection.getrespone( )

關(guān)閉與服務(wù)器的連接: HTTPConne.close()

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

發(fā)送一個(gè)空白行到服務(wù)器,標(biāo)志頭部Header的結(jié)束:HTTPConnection.endheaders( )

發(fā)送數(shù)據(jù)到服務(wù)器:HTTPConnection.send( data ) ,應(yīng)該在endheaders()之后 和 getrespone()之前調(diào)用。

(2)HTTPRespone:

HTTPRespone對(duì)象:一旦用 HTTPConnection 成功連接,可以調(diào)用HTTPConnection.getrespone()返回該實(shí)例(HTTPRequest實(shí)例)。

HTTPRespone.getheader(name) :返回頭部中的 name 字段對(duì)應(yīng)的值

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

HTTPRespone.read() :返回響應(yīng)報(bào)文中的body部分,也即正文部分

HTTPRespone.status #返回狀態(tài)碼

HTTPRespone.version #返回 HTTP協(xié)議版本

http 包應(yīng)用實(shí)例 。

from http.client import HTTPConnection

con = HTTPConnection('www.baidu.com',80)
con.request('GET','/')   #發(fā)送請(qǐng)求報(bào)文
res = con.getresponse()   #獲取響應(yīng)報(bào)文對(duì)象
print(res.status) #200 (表示狀態(tài)碼)
print(res.reason) #OK	 (表示狀態(tài)碼對(duì)應(yīng)的意義)
print(res.read().decode('utf-8')) #打印www.baidu.com的html

以上這篇對(duì)python3 urllib包與http包的使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python圖像處理庫(kù)PIL的ImageFilter模塊使用介紹

    Python圖像處理庫(kù)PIL的ImageFilter模塊使用介紹

    這篇文章主要介紹了Python圖像處理庫(kù)PIL的ImageFilter模塊使用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 使用PyInstaller?打包配置文件

    使用PyInstaller?打包配置文件

    這篇文章主要介紹了使用PyInstaller?打包配置文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 一則python3的簡(jiǎn)單爬蟲(chóng)代碼

    一則python3的簡(jiǎn)單爬蟲(chóng)代碼

    最近一直在學(xué)習(xí)Python,還有網(wǎng)絡(luò)爬蟲(chóng),于是就想起來(lái)把2者結(jié)合一下,所以就有了本文。
    2014-05-05
  • Python基于Gensim實(shí)現(xiàn)文本相似度/匹配/查重

    Python基于Gensim實(shí)現(xiàn)文本相似度/匹配/查重

    Gensim是基于Python語(yǔ)言的自然語(yǔ)言處理庫(kù),用來(lái)主題建模、文本相似度等文本處理任務(wù),下面我們就來(lái)看看如何使用Gensim實(shí)現(xiàn)文本相似度/匹配/查重等操作吧
    2024-03-03
  • Python中函數(shù)的基本定義與調(diào)用及內(nèi)置函數(shù)詳解

    Python中函數(shù)的基本定義與調(diào)用及內(nèi)置函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于Python中函數(shù)的基本定義與調(diào)用及內(nèi)置函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python實(shí)現(xiàn)對(duì)文件進(jìn)行單詞劃分并去重排序操作示例

    Python實(shí)現(xiàn)對(duì)文件進(jìn)行單詞劃分并去重排序操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)文件進(jìn)行單詞劃分并去重排序操作,涉及Python文件讀取、字符串遍歷、拆分、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 解決pycharm回車(chē)之后不能換行或不能縮進(jìn)的問(wèn)題

    解決pycharm回車(chē)之后不能換行或不能縮進(jìn)的問(wèn)題

    今天小編就為大家分享一篇解決pycharm回車(chē)之后不能換行或不能縮進(jìn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 從0到1使用python開(kāi)發(fā)一個(gè)半自動(dòng)答題小程序的實(shí)現(xiàn)

    從0到1使用python開(kāi)發(fā)一個(gè)半自動(dòng)答題小程序的實(shí)現(xiàn)

    這篇文章主要介紹了從0到1使用python開(kāi)發(fā)一個(gè)半自動(dòng)答題小程序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python卸載后再次安裝遇到的問(wèn)題解決

    python卸載后再次安裝遇到的問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于python卸載后再次安裝遇到問(wèn)題解決的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python中sys模塊是做什么用的

    python中sys模塊是做什么用的

    在本篇文章里小編給大家分享了一篇關(guān)于python中sys模塊的用法及相關(guān)基礎(chǔ)知識(shí)點(diǎn),有興趣的朋友們可以參考下。
    2020-08-08

最新評(píng)論