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 Queue模块详解
Nov 30 Python
Python制作爬虫采集小说
Oct 25 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Django日志模块logging的配置详解
Feb 14 Python
python实现聚类算法原理
Feb 12 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
使用django实现一个代码发布系统
Jul 18 Python
python判断自身是否正在运行的方法
Aug 08 Python
python如何将图片转换素描画
Sep 08 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
python标准库ElementTree处理xml
May 20 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php 图像函数大举例(非原创)
2009/06/20 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
pandas数据处理进阶详解
2019/10/11 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python类共享变量操作
2020/09/03 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
应聘教师自荐信
2013/10/12 职场文书
财经学院自荐信范文
2014/02/02 职场文书
中学校庆方案
2014/03/17 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技