Python urlopen()和urlretrieve()用法解析
這篇文章主要介紹了Python urlopen()和urlretrieve()用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
1.urlopen()方法
urllib.urlopen(url[, data[, proxies]]) :創(chuàng)建一個(gè)表示遠(yuǎn)程url的類文件對象,然后像本地文件一樣操作這個(gè)類文件對象來獲取遠(yuǎn)程數(shù)據(jù)。
參數(shù)url表示遠(yuǎn)程數(shù)據(jù)的路徑,一般是網(wǎng)址;
參數(shù)data表示以post方式提交到url的數(shù)據(jù)(玩過web的人應(yīng)該知道提交數(shù)據(jù)的兩種方式:post與get。如果你不清楚,也不必太在意,一般情況下很少用到這個(gè)參數(shù));
參數(shù)proxies用于設(shè)置代理。
- urlopen返回 一個(gè)類文件對象,它提供了如下方法:
- read() , readline() , readlines() , fileno() , close() :這些方法的使用方式與文件對象完全一樣;
- info():返回一個(gè)httplib.HTTPMessage 對象,表示遠(yuǎn)程服務(wù)器返回的頭信息
- getcode():返回Http狀態(tài)碼。如果是http請求,200表示請求成功完成;404表示網(wǎng)址未找到;
- geturl():返回請求的url;
代碼示例:
import urllib
url = "http://www.baidu.com/"
#urlopen()
sock = urllib.urlopen(url)
htmlCode = sock.read()
sock.close
fp = open("e:/1.html","wb")
fp.write(htmlCode)
fp.close
#urlretrieve()
urllib.urlretrieve(url, 'e:/2.html')
2.urlretrieve方法
直接將遠(yuǎn)程數(shù)據(jù)下載到本地。
urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 參數(shù)說明: url:外部或者本地url filename:指定了保存到本地的路徑(如果未指定該參數(shù),urllib會(huì)生成一個(gè)臨時(shí)文件來保存數(shù)據(jù)); reporthook:是一個(gè)回調(diào)函數(shù),當(dāng)連接上服務(wù)器、以及相應(yīng)的數(shù)據(jù)塊傳輸完畢的時(shí)候會(huì)觸發(fā)該回調(diào)。我們可以利用這個(gè)回調(diào)函數(shù)來顯示當(dāng)前的下載進(jìn)度。 data:指post到服務(wù)器的數(shù)據(jù)。該方法返回一個(gè)包含兩個(gè)元素的元組(filename, headers),filename表示保存到本地的路徑,header表示服務(wù)器的響應(yīng)頭。
下面通過例子來演示一下這個(gè)方法的使用,這個(gè)例子將新浪首頁的html抓取到本地,保存在D:/sina.html文件中,同時(shí)顯示下載的進(jìn)度。
import urllib
def callbackfunc(blocknum, blocksize, totalsize):
'''回調(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
url = 'http://www.sina.com.cn'
local = 'd:\\sina.html'
urllib.urlretrieve(url, local, callbackfunc)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python sklearn數(shù)據(jù)預(yù)處理之正則化詳解
數(shù)據(jù)的預(yù)處理是數(shù)據(jù)分析,或者機(jī)器學(xué)習(xí)訓(xùn)練前的重要步驟,這篇文章主要為大家詳細(xì)介紹了sklearn數(shù)據(jù)預(yù)處理中正則化的相關(guān)知識(shí),需要的可以參考下2023-10-10
Python實(shí)現(xiàn)115網(wǎng)盤自動(dòng)下載的方法
這篇文章主要介紹了Python實(shí)現(xiàn)115網(wǎng)盤自動(dòng)下載的方法,可實(shí)現(xiàn)自動(dòng)調(diào)用115客戶端進(jìn)行下載的功能,非常實(shí)用,需要的朋友可以參考下2014-09-09
Python算法應(yīng)用實(shí)戰(zhàn)之棧詳解
棧是什么,你可以理解為一種先入后出的數(shù)據(jù)結(jié)構(gòu)(First In Last Out),一種操作受限的線性表。下面這篇文章主要給大家介紹了Python中棧的應(yīng)用實(shí)戰(zhàn),文中給出了多個(gè)實(shí)例,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02
python?離散點(diǎn)圖畫法的實(shí)現(xiàn)
本文主要介紹了python?離散點(diǎn)圖畫法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Python利用subplots_adjust方法解決圖表與畫布的間距問題
這篇文章主要介紹了如何在使用python?的?matplotlib庫繪圖時(shí),?使用subplots_adjust()方法來調(diào)整圖表與畫布之間的間距,以及圖表與圖表之間的間距,感興趣的可以了解一下2022-04-04
如何利用python實(shí)現(xiàn)詞頻統(tǒng)計(jì)功能
詞頻統(tǒng)計(jì)用途很廣泛,比如我們統(tǒng)計(jì)某篇文章中的用詞頻率,網(wǎng)絡(luò)熱點(diǎn)詞匯,再比如起名排行榜呀、熱門旅游景點(diǎn)排行榜呀什么的,其實(shí)也都可以套用,這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)詞頻統(tǒng)計(jì)功能的相關(guān)資料,需要的朋友可以參考下2021-10-10

