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中的if、else、elif语句用法简明讲解
Mar 11 Python
Python使用wxPython实现计算器
Jan 30 Python
Python面向对象类继承和组合实例分析
May 28 Python
python对离散变量的one-hot编码方法
Jul 11 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
python中partial()基础用法说明
Dec 30 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 Python
Numpy的简单用法小结
Aug 28 Python
python中format函数如何使用
Jun 22 Python
python openssl模块安装及用法
Dec 06 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 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&&mysql)三
2006/10/09 PHP
PHP中include()与require()的区别说明
2010/03/10 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
PHP会话控制实例分析
2016/12/24 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
使用console进行性能测试
2015/04/27 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
理财学专业自荐书
2014/06/28 职场文书
联片教研活动总结
2014/07/01 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
会议室管理制度范本
2015/08/06 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript