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双向链表实现实例代码
Nov 21 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
Python实现程序判断季节的代码示例
Jan 28 Python
PyQt5 多窗口连接实例
Jun 19 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
pytorch标签转onehot形式实例
Jan 02 Python
实例详解Python的进程,线程和协程
Mar 13 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 date与gmdate的获取日期的区别
2010/02/08 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
python访问sqlserver示例
2014/02/10 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
python使用str & repr转换字符串
2016/10/13 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
Django实现跨域请求过程详解
2019/07/25 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
10个示例带你掌握python中的元组
2020/11/23 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
现金出纳岗位职责
2014/03/15 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技