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实现系统状态监测和故障转移实例方法
Nov 18 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
Python3字符串encode与decode的讲解
Apr 02 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
python实现从wind导入数据
Dec 03 Python
Numpy之reshape()使用详解
Dec 26 Python
Python类class参数self原理解析
Nov 19 Python
利用python进行文件操作
Dec 04 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
简介JavaScript中search()方法的使用
2015/06/06 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python图书管理系统
2020/04/05 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
python中的插入排序的简单用法
2021/01/19 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
办理房产证委托书
2014/09/18 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
党员干部学习心得体会
2016/01/23 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS