时间:2021-05-22
Python实现批量下载文件
#!/usr/bin/env python# -*- coding:utf-8 -*-from gevent import monkeymonkey.patch_all()from gevent.pool import Poolimport requestsimport sysimport osdef 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]其他网友的方法:
from os.path import basenamefrom urlparse import urlsplitdef 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地址')以上便是本文给大家分享的全部内容了,小伙伴们可以测试下哪种方法效率更高呢。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python实现支持目录FTP上传下载文件的方法。分享给大家供大家参考。具体如下:该程序支持ftp上传下载文件和目录、适用于windows和lin
文件下载时,我们可能需要一次下载多个文件。批量下载文件时,需要将多个文件打包为zip,然后再下载。实现思路有两种:一是将所有文件先打包压缩为一个文件,然后下载这
百度云管家下载文件有三种实现方式,可以批量下载,也可以单个文件下载,操作方法也很简单,首先下载安装百度云管家,然后登录账号。具体下载操作步骤如下:软件名称:
本文实例讲述了ASP.NET批量下载文件的方法。分享给大家供大家参考。具体方法如下:一、实现步骤在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服
本文实例讲述了python实现的简单FTP上传下载文件的方法。分享给大家供大家参考。具体如下:python本身自带一个FTP模块,可以实现上传下载的函数功能。#