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 enumerate遍历数组示例应用
Sep 06 Python
Python中的闭包总结
Sep 18 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
django rest framework使用django-filter用法
Jul 15 Python
flask开启多线程的具体方法
Aug 02 Python
Python图像读写方法对比
Nov 16 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
php使用百度天气接口示例
2014/04/22 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
在Python中使用正则表达式的方法
2015/08/13 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
python 自动批量打开网页的示例
2019/02/21 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
.NET初级开发工程师面试题
2014/04/18 面试题
检察官就职演讲稿
2014/01/13 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
会议欢迎词范文
2015/01/27 职场文书