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快速查找算法应用实例
Sep 26 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
Python解决八皇后问题示例
Apr 22 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
Python 3.9的到来到底是意味着什么
Oct 14 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 simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP中“=>
2019/03/01 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
谈谈JS中的!!
2017/12/07 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
JavaScript实现网页计算器功能
2020/10/29 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python实现粒子群算法的示例
2021/02/14 Python
副总经理工作职责
2013/11/28 职场文书
心得体会范文
2014/01/04 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
Python List remove()实例用法详解
2021/08/02 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS