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中for循环下的索引变量的作用域
Apr 15 Python
python读写ini配置文件方法实例分析
Jun 30 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
Python探索之pLSA实现代码
Oct 25 Python
python中requests和https使用简单示例
Jan 18 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 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图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
浅析Python 中整型对象存储的位置
2016/05/16 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
python推导式的使用方法实例
2021/02/28 Python
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
无工作经验者个人求职信范文
2013/12/22 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
任命书怎么写
2014/06/04 职场文书
《静夜思》教学反思
2016/02/17 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python