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中pycurl库的用法实例
Sep 30 Python
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
python利用lxml读写xml格式的文件
Aug 10 Python
用python与文件进行交互的方法
Mar 01 Python
django进阶之cookie和session的使用示例
Aug 17 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
在pycharm中无法import所安装的库解决方案
May 31 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 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
javascript加号"+"的二义性说明
2013/03/04 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
python实时监控logstash日志代码
2020/04/27 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
弄虚作假心得体会
2014/09/10 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
导游词之镜泊湖
2019/12/09 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python