Python 中常見的幾種下載文件方法

下載比較小的文件:

 
 

# 方法一:使用urllib庫 # -*- coding:utf-8 -*- import urllib import time url = 'http://mvideo.spriteapp.cn/video/2017/0414' \      '/697de826-20b5-11e7-9c72-1866daeb0df1cut_wpcco.mp4' print "downloading with urllib" start = time.time() urllib.urlretrieve(url, "video.mp4") end = time.time() print 'Finish in :', end - startapp

 
 

# 方法二:使用urllib2庫 # -*- coding:utf-8 -*- import urllib2 import time url = 'http://mvideo.spriteapp.cn/video/2017/0414/' \      '697de826-20b5-11e7-9c72-1866daeb0df1cut_wpcco.mp4' print "downloading with urllib2" start = time.time() data = urllib2.urlopen(url).read() with open('video.mp4', 'wb') as video:    video.write(data) end = time.time() print 'Finish in :', end - startide


 
 

# 方法三:使用requests庫 # -*- coding:utf-8 -*- import requests import time url = 'http://mvideo.spriteapp.cn/video/2017/0414/' \      '697de826-20b5-11e7-9c72-1866daeb0df1cut_wpcco.mp4' print "downloading with requests" start = time.time() r = requests.get(url) with open('video.mp4', 'wb') as video:    video.write(r.content) end = time.time() print 'Finish in :', end - start函數


下載比較大的文件:

 
 

# 方法一:使用urllib2庫 # -*- coding:utf-8 -*- import urllib2 import time url = 'http://mvideo.spriteapp.cn/video/2017/0414/' \      '697de826-20b5-11e7-9c72-1866daeb0df1cut_wpcco.mp4' r = urllib2.Request(url) u = urllib2.urlopen(r) start = time.time() with open('video.mp4', 'w') as f:    while True:        tmp = u.read(1024)        if not tmp:            break        f.write(tmp) end = time.time() print 'Finish in :', end - starturl


 
 

# 方法二:使用requests庫 # -*- coding:utf-8 -*- import requests import time url = 'http://mvideo.spriteapp.cn/video/2017/0414/' \      '697de826-20b5-11e7-9c72-1866daeb0df1cut_wpcco.mp4' # 當把get函數的stream參數設置成False時, # 它會當即開始下載文件並放到內存中,若是文件過大,有可能致使內存不足。 # 當把get函數的stream參數設置成True時,它不會當即開始下載, # 使用iter_content或iter_lines遍歷內容或訪問內容屬性時纔開始下載 r = requests.get(url, stream=True) f = open("file_path", "wb") start = time.time() for chunk in r.iter_content(chunk_size=1024):    if chunk:        f.write(chunk)        f.flush() # iter_content:一塊一塊的遍歷要下載的內容 # iter_lines:一行一行的遍歷要下載的內容 # 這兩個函數下載大文件能夠防止佔用過多的內存,由於每次只下載小部分數據 end = time.time() print 'Finish in :', end - startspa

相關文章
相關標籤/搜索