Python urllib模塊urlopen()與urlretrieve()詳解
1.urlopen()方法
urllib.urlopen(url[, data[, proxies]]) :創(chuàng)建一個表示遠(yuǎn)程url的類文件對象,然后像本地文件一樣操作這個類文件對象來獲取遠(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。如果你不清楚,也不必太在意,一般情況下很少用到這個參數(shù));
參數(shù)proxies用于設(shè)置代理。
urlopen返回 一個類文件對象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :這些方法的使用方式與文件對象完全一樣;
info():返回一個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會生成一個臨時文件來保存數(shù)據(jù));
reporthook:是一個回調(diào)函數(shù),當(dāng)連接上服務(wù)器、以及相應(yīng)的數(shù)據(jù)塊傳輸完畢的時候會觸發(fā)該回調(diào)。我們可以利用這個回調(diào)函數(shù)來顯示當(dāng)前的下載進(jìn)度。
data:指post到服務(wù)器的數(shù)據(jù)。該方法返回一個包含兩個元素的元組(filename, headers),filename表示保存到本地的路徑,header表示服務(wù)器的響應(yīng)頭。
下面通過例子來演示一下這個方法的使用,這個例子將新浪首頁的html抓取到本地,保存在D:/sina.html文件中,同時顯示下載的進(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)
相關(guān)文章
python使用pika庫調(diào)用rabbitmq參數(shù)使用詳情
這篇文章主要介紹了python使用pika庫調(diào)用rabbitmq參數(shù)使用詳情,文章通過展開文章主題分享了三種方式,具有一定的參考價值,需要的朋友可以參考一下2022-08-08
一文教你如何用Python輕輕松松操作Excel,Word,CSV
數(shù)據(jù)處理是 Python 的一大應(yīng)用場景,而 Excel 又是當(dāng)前最流行的數(shù)據(jù)處理軟件。本文將為大家詳細(xì)介紹一下如何用Python輕輕松松操作Excel、Word、CSV,需要的可以參考一下2022-02-02
pycharm 實現(xiàn)調(diào)試窗口恢復(fù)
這篇文章主要介紹了pycharm 實現(xiàn)調(diào)試窗口恢復(fù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
python?實現(xiàn)syslog?服務(wù)器的詳細(xì)過程
這篇文章主要介紹了python?實現(xiàn)syslog服務(wù)器的詳細(xì)過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
Python實現(xiàn)的插入排序算法原理與用法實例分析
這篇文章主要介紹了Python實現(xiàn)的插入排序算法原理與用法,簡單描述了插入排序的原理,并結(jié)合實例形式分析了Python實現(xiàn)插入排序的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11

