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实现在线程里运行scrapy的方法
Apr 07 Python
Python读写ini文件的方法
May 28 Python
Python字符编码判断方法分析
Jul 01 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
Python3处理HTTP请求的实例
May 10 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
pygame实现弹球游戏
Apr 14 Python
OpenCV-Python实现轮廓的特征值
Jun 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
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
PHP使用递归生成文章树
2015/04/21 PHP
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
详解Python字符串对象的实现
2015/12/24 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
python人民币小写转大写辅助工具
2018/06/20 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
python和go语言的区别是什么
2020/07/20 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
美德好少年事迹材料
2014/01/19 职场文书
家长建议怎么写
2014/05/15 职场文书
团队队名口号大全
2014/06/06 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
使用python绘制横竖条形图
2022/04/21 Python