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 15 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python程序退出方式小结
Dec 09 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
Python3简单实现串口通信的方法
Jun 12 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
Python识别html主要文本框过程解析
Feb 18 Python
基于Python中random.sample()的替代方案
May 23 Python
python如何支持并发方法详解
Jul 25 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 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
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
javascript 学习之旅 (1)
2009/02/05 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
python备份文件的脚本
2008/08/11 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
利用Python破解斗地主残局详解
2017/06/30 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Python实战购物车项目的实现参考
2019/02/20 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python集合删除多种方法详解
2020/02/10 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
学校元旦晚会方案
2014/02/19 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers