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脚本实现Web漏洞扫描工具
Oct 25 Python
django缓存配置的几种方法详解
Jul 16 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
python如何将多个PDF进行合并
Aug 13 Python
pytorch 共享参数的示例
Aug 17 Python
python 初始化一个定长的数组实例
Dec 02 Python
Pytorch之view及view_as使用详解
Dec 31 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
Django url 路由匹配过程详解
Jan 22 Python
总结Python常用的魔法方法
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 数组的指针操作实现代码
2011/02/08 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python中常见的数据类型小结
2015/08/29 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
python元组拆包实现方法
2021/02/28 Python
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
研发工程师的岗位职责
2013/11/18 职场文书
大学本科毕业生求职信范文
2013/12/18 职场文书
工程主管竞聘书
2015/09/15 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书