Python實現(xiàn)批量下載文件
更新時間:2015年05月17日 12:11:45 投稿:hebedich
之前給大家分享的python 多線程抓取網(wǎng)頁,不過這個只能用python 來抓取到網(wǎng)頁的源代碼,如果你想用做python 下載文件的話,上面的可能就不適合你了,最近我在用python 做文件下載的時候就遇到這個問題了,不過最終得以解決,我把代碼發(fā)出來
Python實現(xiàn)批量下載文件
#!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_all() from gevent.pool import Pool import requests import sys import os def download(url): chrome = 'Mozilla/5.0 (X11; Linux i86_64) AppleWebKit/537.36 ' + '(KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36' headers = {'User-Agent': chrome} filename = url.split('/')[-1].strip() r = requests.get(url.strip(), headers=headers, stream=True) with open(filename, 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: f.write(chunk) f.flush() print filename,"is ok" def removeLine(key, filename): os.system('sed -i /%s/d %s' % (key, filename)) if __name__ =="__main__": if len(sys.argv) == 2: filename = sys.argv[1] f = open(filename,"r") p = Pool(4) for line in f.readlines(): if line: p.spawn(download, line.strip()) key = line.split('/')[-1].strip() removeLine(key, filename) f.close() p.join() else: print 'Usage: python %s urls.txt' % sys.argv[0]
其他網(wǎng)友的方法:
from os.path import basename from urlparse import urlsplit def url2name(url): return basename(urlsplit(url)[2]) def download(url, localFileName = None): localName = url2name(url) req = urllib2.Request(url) r = urllib2.urlopen(req) if r.info().has_key('Content-Disposition'): # If the response has Content-Disposition, we take file name from it localName = r.info()['Content-Disposition'].split('filename=')[1] if localName[0] == '"' or localName[0] == "'": localName = localName[1:-1] elif r.url != url: # if we were redirected, the real file name we take from the final URL localName = url2name(r.url) if localFileName: # we can force to save the file as specified name localName = localFileName f = open(localName, 'wb') f.write(r.read()) f.close() download(r'你要下載的python文件的url地址')
以上便是本文給大家分享的全部內(nèi)容了,小伙伴們可以測試下哪種方法效率更高呢。
您可能感興趣的文章:
- Python獲取遠程文件大小的函數(shù)代碼分享
- python實現(xiàn)帶錯誤處理功能的遠程文件讀取方法
- python通過paramiko復(fù)制遠程文件及文件目錄到本地
- python定時復(fù)制遠程文件夾中所有文件
- python使用Paramiko模塊實現(xiàn)遠程文件拷貝
- python 從遠程服務(wù)器下載日志文件的程序
- Python通過paramiko遠程下載Linux服務(wù)器上的文件實例
- python實現(xiàn)下載文件的三種方法
- Python實現(xiàn)HTTP協(xié)議下的文件下載方法總結(jié)
- Python實現(xiàn)的遠程文件自動打包并下載功能示例
相關(guān)文章
Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實例
這篇文章主要介紹了Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python3.6+selenium2.53.6自動化測試_讀取excel文件的方法
這篇文章主要介紹了Python3.6+selenium2.53.6自動化測試_讀取excel文件的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Python對Excel按列值篩選并拆分表格到多個文件的代碼
這篇文章主要介紹了Python對Excel按列值篩選并拆分表格到多個文件,本文通過代碼給大家介紹的非常詳細,需要的朋友可以參考下2019-11-11Python3的高階函數(shù)map,reduce,filter的示例詳解
這篇文章主要介紹了Python3的高階函數(shù)map,reduce,filter的示例代碼,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07