Python实现批量下载文件
发布时间:2020-12-16 19:58:07 所属栏目:Python 来源:网络整理
导读: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) AppleWe
Python实现批量下载文件 #!/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] 其他网友的方法: 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地址') 以上便是本文给大家分享的全部内容了,小伙伴们可以测试下哪种方法效率更高呢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python爬虫scrapy(一)
- Python变量避免的3个错误解析
- TypeError:’function’对象不可订阅 – Python
- python – PyQt窗口在打开后立即关闭
- python – django-admin.py makemessages不会创建.po文件
- python – 如何从函数中获取函数的名称(或者对函数的“自我
- Flask框架Flask-Principal基本用法实例分析
- python – 在不运行__init__的情况下测试实例方法的最佳方法
- python3面对像进阶--isinstance(obj,cls)和issubclass(sub,
- Python range和xrange入门实例