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脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Python3中的json模块使用详解
May 05 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
一个JavaScript的求爱小特效
2014/05/09 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
基于python中的TCP及UDP(详解)
2017/11/06 Python
详解python中的线程
2018/02/10 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
python动态视频下载器的实现方法
2019/09/16 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
浅析Python requests 模块
2020/10/09 Python
python 数据类型强制转换的总结
2021/01/25 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
化验室岗位职责
2015/02/14 职场文书
医院合作意向书范本
2015/05/08 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
python编程项目中线上问题排查与解决
2021/11/01 Python
flex弹性布局详解
2022/03/20 HTML / CSS
介绍一下28个JS常用数组方法
2022/05/06 Javascript