Python urlopen()和urlretrieve()用法解析


Posted in Python onJanuary 07, 2020

这篇文章主要介绍了Python urlopen()和urlretrieve()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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开发的小球完全弹性碰撞游戏代码
Oct 15 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
python实现批量下载新浪博客的方法
Jun 15 Python
python黑魔法之编码转换
Jan 25 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
Django model update的多种用法介绍
Mar 28 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
pytorch ImageFolder的覆写实例
Feb 20 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 #Python
解决torch.autograd.backward中的参数问题
Jan 07 #Python
Pytorch 中retain_graph的用法详解
Jan 07 #Python
PyTorch中的Variable变量详解
Jan 07 #Python
python enumerate内置函数用法总结
Jan 07 #Python
pytorch加载自定义网络权重的实现
Jan 07 #Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 #Python
You might like
PHP+DBM的同学录程序(3)
2006/10/09 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
提高python代码运行效率的一些建议
2020/09/29 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
HTML5 解析规则分析
2009/08/14 HTML / CSS
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
Python - 10行代码集2000张美女图
2021/05/23 Python