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实现电子词典
Apr 23 Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
Python requests发送post请求的一些疑点
May 20 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
Django中create和save方法的不同
Aug 13 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
python的reverse函数翻转结果为None的问题
May 11 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python 如何做一个识别率百分百的OCR
May 29 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
ThinkPHP中关联查询实例
2014/12/02 PHP
PHP curl使用实例
2015/07/02 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP加密解密实例分析
2015/12/25 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
jquery动态添加option示例
2013/12/30 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
python概率计算器实例分析
2015/03/25 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python如何快速实现分布式任务
2017/07/06 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
最新计算机专业自荐信
2013/10/16 职场文书
拾金不昧表扬信范文
2014/01/11 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP