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使用itchat实现手机控制电脑
Feb 22 Python
numpy中矩阵合并的实例
Jun 15 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
Python基于pandas爬取网页表格数据
May 11 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 Python
Python基于unittest实现测试用例执行
Nov 25 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验证码类实例分享
2013/12/27 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
puppeteer库入门初探
2019/01/09 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python实现汉诺塔方法汇总
2016/07/25 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
python实现文件的分割与合并
2019/08/29 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
销售实习自我鉴定
2013/12/07 职场文书
创优争先心得体会
2014/09/11 职场文书
酒桌上的开场白
2015/06/01 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
小学班级标语口号大全
2015/12/26 职场文书