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 15 Python
Python AES加密模块用法分析
May 22 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
让代码变得更易维护的7个Python库
Oct 09 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python处理excel绘制雷达图
Oct 18 Python
python 伯努利分布详解
Feb 25 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
python中@property的作用和getter setter的解释
Dec 22 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 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动态生成JavaScript代码
2009/03/09 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
windows下python连接oracle数据库
2017/06/07 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
解决Django中多条件查询的问题
2019/07/18 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
专升本自我鉴定
2013/10/10 职场文书
大学生标准推荐信范文
2013/11/25 职场文书
教师自我评价范文
2013/12/16 职场文书
超市重阳节活动方案
2014/02/10 职场文书
公安学专业求职信
2014/07/27 职场文书
个人汇报材料范文
2014/12/30 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
员工手册编写范本
2015/05/14 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android
spring 项目实现限流方法示例
2022/07/15 Java/Android