Python实现HTTP协议下的文件下载方法总结


Posted in Python onApril 20, 2016

本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙。

1.简单文件下载

使用htttplib2,具体代码如下:

h = httplib2.Http()      
url = 'https://3water.com/ip.zip'  
resp, content = h.request(url)  
      
if resp['status'] == '200':  
  with open(filename, 'wb') as f:  
    f.write(content)

使用urllib,具体代码如下:

filename = urllib.unquote(url).decode('utf8').split('/')[-1]  
urllib.urlretrieve(url, filename)

  

2.较大文件下载

def down_file():  
  url = "https://3water.com/download.abc"  
  
  file_name = url.split('/')[-1]  
  u = urllib2.urlopen(url)  
  f = open(file_name, 'wb')  
  meta = u.info()  
  file_size = int(meta.getheaders("Content-Length")[0])  
    
  file_size_dl = 0  
  block_sz = 8192  
  while True:  
    buffer = u.read(block_sz)  
    if not buffer:  
      break  
    
    file_size_dl += len(buffer)  
    f.write(buffer)  
  f.close()

在获取下载文件名的过程中,可以解析url,代码如下:

scheme, netloc, path, query, fragment = urlparse.urlsplit(url)  
filename = os.path.basename(path)  
if not filename:  
  filename = 'downloaded.file'

3.端点续传下载
在使用HTTP协议进行下载的时候只需要在头上设置一下Range的范围就可以进行断点续传下载,当然,首先服务器需要支持断点续传。

利用Python的urllib2模块完成断点续传下载的例子:

#!/usr/bin/python 
# -*- coding: UTF-8 -* 
''' 
Created on 2013-04-15 
Created by RobinTang 
A demo for Resuming Transfer 
''' 
import urllib2 
 
req = urllib2.Request('http://www.python.org/') 
req.add_header('Range', 'bytes=0-20') # set the range, from 0byte to 19byte, 20bytes len 
res = urllib2.urlopen(req) 
 
data = res.read() 
 
print data 
print '---------' 
print 'len:%d'%len(data)
Python 相关文章推荐
Python中的闭包详细介绍和实例
Nov 21 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python中super关键字用法实例分析
May 28 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
详解Python命令行解析工具Argparse
Apr 20 #Python
利用Python如何生成随机密码
Apr 20 #Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 #Python
python实现简单socket通信的方法
Apr 19 #Python
python实现域名系统(DNS)正向查询的方法
Apr 19 #Python
python安装与使用redis的方法
Apr 19 #Python
Python实现文件复制删除
Apr 19 #Python
You might like
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
python随机生成指定长度密码的方法
2015/04/04 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
python中adb有什么功能
2020/06/07 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
九年级英语教学反思
2014/01/31 职场文书
倡议书格式
2014/04/14 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
办理收楼委托书范本
2014/10/09 职场文书
群众路线表态发言材料
2014/10/17 职场文书
安全第一课观后感
2015/06/18 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
百年校庆感言
2015/08/01 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js