第一種:使用urllib.request庫中的urlretrieve方法
1.示例代碼:
from urllib.request import urlretrieve # 引入庫
url = 'http://pic1.win4000.com/wallpaper/2017-10-31/59f82773524ee.jpg' # 要下載的圖片的地址
urlretrieve(url, './girl.jpg') # 保存到本地,并設(shè)置路徑
2.方法詳解
urllib模塊提供的urlretrieve()
函數(shù)旗扑,可直接將遠(yuǎn)程數(shù)據(jù)下載到本地表制,語法格式如下:
urlretrieve(url, filename=None, reporthook=None, data=None)
- 參數(shù)url是要下載數(shù)據(jù)的地址
- 參數(shù)filename指定了保存本地路徑(如果參數(shù)未指定胯舷,urllib會生成一個臨時文件保存數(shù)據(jù))
- 參數(shù)reporthook是一個回調(diào)函數(shù)王带,當(dāng)連接上服務(wù)器埂软、以及相應(yīng)的數(shù)據(jù)塊傳輸完畢時會觸發(fā)該回調(diào)享言,我們可以利用這個回調(diào)函數(shù)來顯示當(dāng)前的下載進(jìn)度
- 參數(shù)data指post導(dǎo)服務(wù)器的數(shù)據(jù)峻凫,該方法返回一個包含兩個元素的(filename, headers) 元組,filename 表示保存到本地的路徑览露,header表示服務(wù)器的響應(yīng)頭
第二種:請求圖片的流數(shù)據(jù)荧琼,寫入到本地文件,完成下載
1.示例代碼:
import requests # 引入相關(guān)庫
url = 'http://pic1.win4000.com/wallpaper/2017-10-31/59f82773524ee.jpg' # 要下載的圖片的地址
r = requests.get(url) # 請求圖片的數(shù)據(jù)
# 將圖片的流數(shù)據(jù)寫入到girl_2.jpg文件中
with open('./girl_2.jpg', 'wb') as img:
img.write(r.content)
2.方法詳解
無論是圖片還是.mp3、.mp4命锄,.revb等文件堰乔,他們在網(wǎng)絡(luò)上傳輸?shù)臅r候,都是采用編碼后的流數(shù)據(jù)脐恩,我們將這些流數(shù)據(jù)請求下來镐侯,然后寫入到對應(yīng)的文件中,就相當(dāng)于把這些文件下載下來驶冒。
在本例中苟翻,我們使用reques.get()
方法可以得到Response對象r,然后使用r.content
就可以獲取r編碼后的流數(shù)據(jù)骗污。將其寫入到girl_2.jpg崇猫,就可以成功將該圖片下載到本地。
這是簡單的將網(wǎng)絡(luò)上的圖片下載到本地的方法需忿,你可以在這個基礎(chǔ)之上進(jìn)行擴(kuò)展诅炉,比如下載小說、電影等文件屋厘。
或者是對下載的圖片進(jìn)行處理涕烧,保存到本地特定的文件夾或給出更有規(guī)律的命名。
發(fā)揮你的創(chuàng)意開始進(jìn)行創(chuàng)作吧擅这。