Python urllib模塊urlopen()與urlretrieve()詳解
1.urlopen()方法
urllib.urlopen(url[, data[, proxies]]) :創(chuàng)建一個(gè)表示遠(yuǎn)程url的類(lèi)文件對(duì)象,然后像本地文件一樣操作這個(gè)類(lèi)文件對(duì)象來(lái)獲取遠(yuǎn)程數(shù)據(jù)。
參數(shù)url表示遠(yuǎn)程數(shù)據(jù)的路徑,一般是網(wǎng)址;
參數(shù)data表示以post方式提交到url的數(shù)據(jù)(玩過(guò)web的人應(yīng)該知道提交數(shù)據(jù)的兩種方式:post與get。如果你不清楚,也不必太在意,一般情況下很少用到這個(gè)參數(shù));
參數(shù)proxies用于設(shè)置代理。
urlopen返回 一個(gè)類(lèi)文件對(duì)象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :這些方法的使用方式與文件對(duì)象完全一樣;
info():返回一個(gè)httplib.HTTPMessage 對(duì)象,表示遠(yuǎn)程服務(wù)器返回的頭信息
getcode():返回Http狀態(tài)碼。如果是http請(qǐng)求,200表示請(qǐng)求成功完成;404表示網(wǎng)址未找到;
geturl():返回請(qǐng)求的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ù)說(shuō)明:
url:外部或者本地url
filename:指定了保存到本地的路徑(如果未指定該參數(shù),urllib會(huì)生成一個(gè)臨時(shí)文件來(lái)保存數(shù)據(jù));
reporthook:是一個(gè)回調(diào)函數(shù),當(dāng)連接上服務(wù)器、以及相應(yīng)的數(shù)據(jù)塊傳輸完畢的時(shí)候會(huì)觸發(fā)該回調(diào)。我們可以利用這個(gè)回調(diào)函數(shù)來(lái)顯示當(dāng)前的下載進(jìn)度。
data:指post到服務(wù)器的數(shù)據(jù)。該方法返回一個(gè)包含兩個(gè)元素的元組(filename, headers),filename表示保存到本地的路徑,header表示服務(wù)器的響應(yīng)頭。
下面通過(guò)例子來(lái)演示一下這個(gè)方法的使用,這個(gè)例子將新浪首頁(yè)的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)
- Python urlopen()和urlretrieve()用法解析
- 詳解Python3網(wǎng)絡(luò)爬蟲(chóng)(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果
- python urllib urlopen()對(duì)象方法/代理的補(bǔ)充說(shuō)明
- 解決python3 urllib中urlopen報(bào)錯(cuò)的問(wèn)題
- Python使用urllib模塊的urlopen超時(shí)問(wèn)題解決方法
- Python urlopen()函數(shù) 示例分享
- Python urlopen 使用小示例
- Python urlopen()參數(shù)代碼示例解析
相關(guān)文章
詳解Python下Flask-ApScheduler快速指南
Flask是Python社區(qū)非常流行的一個(gè)Web開(kāi)發(fā)框架,本文將嘗試將介紹APScheduler應(yīng)用于Flask之中,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-11-11基于Python+Turtle實(shí)現(xiàn)繪制簡(jiǎn)易的大風(fēng)車(chē)
大風(fēng)車(chē),吱呀吱呦呦地轉(zhuǎn),這里的風(fēng)景呀真好看!天好看,地好看……一首熟悉的歌曲,是否已經(jīng)把你拉回了童年?本文將用Turtle庫(kù)繪制簡(jiǎn)易的大風(fēng)車(chē),需要的可以參考一下2022-06-06python人工智能自定義求導(dǎo)tf_diffs詳解
這篇文章主要為大家介紹了python人工智能自定義求導(dǎo)tf_diffs詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Matplotlib實(shí)現(xiàn)各種條形圖繪制
這篇文章主要介紹了Matplotlib實(shí)現(xiàn)各種條形圖繪制,文章通過(guò)利用 plt.bar 方法實(shí)現(xiàn)各種條形圖繪制,內(nèi)容詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03Python并發(fā)請(qǐng)求下限制QPS(每秒查詢(xún)率)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python并發(fā)請(qǐng)求下限制QPS(每秒查詢(xún)率)實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06解決Jupyter notebook中.py與.ipynb文件的import問(wèn)題
這篇文章主要介紹了解決Jupyter notebook中.py與.ipynb文件的import問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04