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中生成器和yield语句的用法详解
Apr 17 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Python中单、双下划线的区别总结
Dec 01 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
python实现身份证实名认证的方法实例
Nov 08 Python
Python numpy数组转置与轴变换
Nov 15 Python
python实现飞行棋游戏
Feb 05 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递归法读取目录及文件的方法
2015/01/30 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
js+canvas实现验证码功能
2020/09/21 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
python的迭代器与生成器实例详解
2014/07/16 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
TensorFlow损失函数专题详解
2018/04/26 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
正规的求职信范文分享
2013/12/11 职场文书
实习推荐信
2014/05/10 职场文书
整改报告格式
2014/11/06 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
关于Vue中的options选项
2022/03/22 Vue.js
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby