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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
python对字典进行排序实例
Sep 25 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
python解析yaml文件过程详解
Aug 30 Python
python的列表List求均值和中位数实例
Mar 03 Python
Numpy一维线性插值函数的用法
Apr 22 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
python爬虫使用requests发送post请求示例详解
Aug 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如何得到当前页和上一页的地址?
2006/11/27 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
python自动化测试之连接几组测试包实例
2014/09/28 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python中查看文件名和文件路径
2017/03/31 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
PyQt5实现下载进度条效果
2018/04/19 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
Python os库常用操作代码汇总
2020/11/03 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
优秀毕业生求职信
2014/06/05 职场文书