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中函数的参数传递
Jun 21 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
Python 如何定义匿名或内联函数
Aug 01 Python
python爬取youtube视频的示例代码
Mar 03 Python
如何在Python项目中引入日志
May 31 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
PHP实现分页的一个示例
2006/10/09 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
实时获取Python的print输出流方法
2019/01/07 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
大学生优秀的自我评价分享
2013/10/22 职场文书
党员服务承诺书
2014/05/28 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
暑期社会实践证明书
2014/11/17 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
办公室管理规章制度
2015/08/04 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
如何在C++中调用Python
2021/05/21 Python