Python urllib模块urlopen()与urlretrieve()详解


Posted in Python onNovember 01, 2013

1.urlopen()方法
urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
参数url表示远程数据的路径,一般是网址;
参数data表示以post方式提交到url的数据(玩过web的人应该知道提交数据的两种方式:post与get。如果你不清楚,也不必太在意,一般情况下很少用到这个参数);
参数proxies用于设置代理。
urlopen返回 一个类文件对象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
geturl():返回请求的url;
代码示例:

import urllib
url = "http://www.baidu.com/"
#urlopen()
sock = urllib.urlopen(url)
htmlCode = sock.read()
sock.close
fp = open("e:/1.html","wb")
fp.write(htmlCode)
fp.close
#urlretrieve()
urllib.urlretrieve(url, 'e:/2.html')

2.urlretrieve方法
直接将远程数据下载到本地。

urllib.urlretrieve(url[, filename[, reporthook[, data]]])
参数说明:
url:外部或者本地url
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。
data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。

下面通过例子来演示一下这个方法的使用,这个例子将新浪首页的html抓取到本地,保存在D:/sina.html文件中,同时显示下载的进度。
import urllib
def callbackfunc(blocknum, blocksize, totalsize):
    '''回调函数
    @blocknum: 已经下载的数据块
    @blocksize: 数据块的大小
    @totalsize: 远程文件的大小
    '''
    percent = 100.0 * blocknum * blocksize / totalsize
    if percent > 100:
        percent = 100
    print "%.2f%%"% percent
url = 'http://www.sina.com.cn'
local = 'd:\\sina.html'
urllib.urlretrieve(url, local, callbackfunc)

Python 相关文章推荐
Python面向对象class类属性及子类用法分析
Feb 02 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
Python学习小技巧总结
Jun 10 Python
pytorch permute维度转换方法
Dec 14 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
如何清空python的变量
Jul 05 Python
python实现简单的tcp 文件下载
Sep 16 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
Python ZipFile模块详解
Nov 01 #Python
python标准日志模块logging的使用方法
Nov 01 #Python
python类定义的讲解
Nov 01 #Python
用实例说明python的*args和**kwargs用法
Nov 01 #Python
python操作MongoDB基础知识
Nov 01 #Python
python操作MySQL数据库具体方法
Oct 28 #Python
Python sys.path详细介绍
Oct 17 #Python
You might like
PHP 函数语法介绍一
2009/06/14 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php防止sql注入简单分析
2015/03/18 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
jquery 学习笔记一
2010/04/07 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
require.js中的define函数详解
2017/07/10 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
自考生自我鉴定范文
2013/10/01 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
网络技术专业求职信
2014/05/02 职场文书
科学发展观活动总结
2014/08/28 职场文书
布达拉宫导游词
2015/02/02 职场文书
春秋淹城导游词
2015/02/11 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
高温慰问简报
2015/07/21 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python