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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
Python实现针对中文排序的方法
May 09 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
python 读取数据库并绘图的实例
Dec 03 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
python缺失值填充方法示例代码
Dec 24 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
yii2缓存Caching基本用法示例
2016/07/18 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
picChange 图片切换特效的函数代码
2010/05/06 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
详解Python中的循环语句的用法
2015/04/09 Python
对于Python的Django框架部署的一些建议
2015/04/09 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
Python常用类型转换实现代码实例
2020/07/28 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
英语系本科生求职信范文
2013/12/18 职场文书
英语感恩演讲稿
2014/01/14 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
体育教师求职信
2014/05/24 职场文书
航空学院求职信
2014/06/11 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
逃课检讨书
2015/01/26 职场文书
解约证明模板
2015/06/19 职场文书