Python实现批量下载文件


Posted in Python onMay 17, 2015

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 相关文章推荐
Python中asyncore的用法实例
Sep 29 Python
用Python实现一个简单的线程池
Apr 07 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
python与caffe改变通道顺序的方法
Aug 04 Python
解决python打不开文件(文件不存在)的问题
Feb 18 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
解决python存数据库速度太慢的问题
Apr 23 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
python抓取最新博客内容并生成Rss
May 17 #Python
Python实现遍历数据库并获取key的值
May 17 #Python
Python对列表排序的方法实例分析
May 16 #Python
python中base64加密解密方法实例分析
May 16 #Python
python中threading超线程用法实例分析
May 16 #Python
python实现合并两个数组的方法
May 16 #Python
python简单实现基数排序算法
May 16 #Python
You might like
PHP生成Flash动画的实现代码
2010/03/12 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
laravel自定义分页效果
2017/07/23 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
对Python中type打开文件的方式介绍
2018/04/28 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python发展史及网络爬虫
2019/06/19 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
求职推荐信
2013/10/28 职场文书
计算机个人求职信范例
2014/01/24 职场文书
科技工作者先进事迹
2014/08/16 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书