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中random模块用法实例分析
May 19 Python
python实现三次样条插值
Dec 17 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
python打造爬虫代理池过程解析
Aug 15 Python
python第三方库学习笔记
Feb 07 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 Python
详解NumPy中的线性关系与数据修剪压缩
May 25 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+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php实现word转html的方法
2016/01/22 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
vue综合组件间的通信详解
2017/11/06 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Numpy之文件存取的示例代码
2018/08/03 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
python常用函数与用法示例
2019/07/02 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
用python发送微信消息
2020/12/21 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
工作个人的自我评价
2014/01/14 职场文书
精彩自我鉴定
2014/01/16 职场文书
人事助理自荐信
2014/02/02 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
公司活动总结怎么写
2014/06/25 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS