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分析网页上所有超链接的方法
May 08 Python
Python实现命令行通讯录实例教程
Aug 18 Python
深入理解Django的自定义过滤器
Oct 17 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python tkinter组件使用详解
Sep 16 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
Python如何将装饰器定义为类
Jul 30 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 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学习笔记之面向对象编程
2012/12/29 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
php建立Ftp连接的方法
2015/03/07 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
学习python (2)
2006/10/31 Python
python返回昨天日期的方法
2015/05/13 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
计算机专业自荐信
2013/10/14 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
公司承诺书格式
2014/05/21 职场文书
设备收款委托书范本
2014/10/02 职场文书
师范生见习报告范文
2014/11/03 职场文书
见习报告格式范文
2014/11/08 职场文书
重阳节活动主持词
2015/07/04 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS