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 ZipFile模块详解
Nov 01 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
python样条插值的实现代码
Dec 17 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
python如何实现数据的线性拟合
Jul 19 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python queue队列原理与应用案例分析
Sep 27 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 Python
python多次执行绘制条形图
Apr 20 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
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
微信小程序实现手指触摸画板
2018/07/09 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
浅析Python编写函数装饰器
2016/03/18 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Python读写文件基础知识点
2019/06/10 Python
python getopt模块使用实例解析
2019/12/18 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
优秀中专生推荐信
2013/11/17 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
科技之星事迹材料
2014/06/02 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
护理专业自我评价
2015/03/11 职场文书
消防隐患整改通知书
2015/04/22 职场文书
少先队中队工作总结
2015/08/14 职场文书
初中班主任教育随笔
2015/08/15 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
利用Python+OpenCV三步去除水印
2021/05/28 Python
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android