python實現文件下載圖片視頻


最近在學習爬蟲,在爬取網站時很多時候是需要將圖片或視頻下載到本地 今天就來說說如何使用urllib將圖片保存到本地

以下代碼均為win7  python3.6.*

 使用urllib下載函數保存

from urllib import request  
  
# 要下載的圖片鏈接地址  
img_url = 'https://imgsa.baidu.com/forum/w%3D580/sign=adc0a68a97504fc2a25fb00dd5dfe7f0/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'  
#url為圖片下載鏈接   
request.urlretrieve(url=img_url,'./baidu/1.jpg')  

使用urllib文件方式寫入文件

from urllib import request
 
#要下載的鏈接地址
img_url = 'https://imgsa.baidu.com/forum/w%3D580/sign=adc0a68a97504fc2a25fb00dd5dfe7f0/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'
# 文件的方式保存下載的圖片
response = request.urlopen(img_url)
#讀取返回的內容
img = response.read()
with open('baidu/1.jpg','wb') as f:
    #將圖片內容以二進制寫入
    f.write(img)

使用urllib的下載函數下載視頻並輸出下載進度

from urllib import request
 
base_url = 'https://f.us.sinaimg.cn/001KhC86lx07laEy0PtC01040200y8vC0k010.mp4?label=mp4_hd&template=640x360.28&Expires=1528689591&ssig=qhWun5Mago&KID=unistore,video'
#下載進度函數
def report(a,b,c):
    '''
    a:已經下載的數據塊
    b:數據塊的大小
    c:遠程文件的大小
    '''
    per = 100.0 * a * b / c
    if per > 100:
        per = 100
    print ('%.2f%%' % per)
#使用下載函數下載視頻並調用進度函數輸出下載進度
request.urlretrieve(url=base_url,finename='weibo/1.mp4',reporthook=report,data=None)

說明:

  • 參數 finename 指定了保存本地路徑(如果參數未指定,urllib會生成一個臨時文件保存數據。)

  • 參數 reporthook 是一個回調函數,當連接上服務器、以及相應的數據塊傳輸完畢時會觸發該回調,我們可以利用這個回調函數來顯示當前的下載進度。

  • 參數 data 指 post 到服務器的數據,該方法返回一個包含兩個元素的(filename, headers)元組,filename 表示保存到本地的路徑,header 表示服務器的響應頭。 

  •  

Python 下載超大文件

Python 下載超大文件鏈接

 

如有錯誤 歡迎交流

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM