urllib.urlretrieve远程下载

下面我们再来看看 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。

>>> help(urllib.urlretrieve)
Help on function urlretrieve in module urllib:

urlretrieve(url, filename=None, reporthook=None, data=None)
  • 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
  • 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
  • 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

下面通过例子来演示一下这个方法的使用,这个例子将 google 的 html 抓取到本地,保存在 D:/google.html 文件中,同时显示下载的进度。

 1 import urllib
 2 def cbk(a, b, c):
 3     ‘‘‘回调函数
 4     @a: 已经下载的数据块
 5     @b: 数据块的大小
 6     @c: 远程文件的大小
 7     ‘‘‘
 8     per = 100.0 * a * b / c
 9     if per > 100:
10         per = 100
11     print ‘%.2f%%‘ % per
12
13 url = ‘http://www.google.com‘
14 local = ‘d://google.html‘
15 urllib.urlretrieve(url, local, cbk)

下面是 urlretrieve() 下载文件实例,可以显示下载进度。

 1 #!/usr/bin/python
 2 #encoding:utf-8
 3 import urllib
 4 import os
 5 def Schedule(a,b,c):
 6     ‘‘‘‘‘
 7     a:已经下载的数据块
 8     b:数据块的大小
 9     c:远程文件的大小
10    ‘‘‘
11     per = 100.0 * a * b / c
12     if per > 100 :
13         per = 100
14     print ‘%.2f%%‘ % per
15 url = ‘http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2‘
16 #local = url.split(‘/‘)[-1]
17 local = os.path.join(‘/data/software‘,‘Python-2.7.5.tar.bz2‘)
18 urllib.urlretrieve(url,local,Schedule)
19 ######output######
20 #0.00%
21 #0.07%
22 #0.13%
23 #0.20%
24 #....
25 #99.94%
26 #100.00%

  通过上面的练习可以知道,urlopen() 可以轻松获取远端 html 页面信息,然后通过 python 正则对所需要的数据进行分析,匹配出想要用的数据,在利用urlretrieve() 将数据下载到本地。对于访问受限或者对连接数有限制的远程 url 地址可以采用 proxies(代理的方式)连接,如果远程数据量过大,单线程下载太慢的话可以采用多线程下载,这个就是传说中的爬虫。

时间: 2024-10-08 16:43:53

urllib.urlretrieve远程下载的相关文章

Python urllib urlretrieve函数解析

Python urllib urlretrieve函数解析 利用urllib.request.urlretrieve函数下载文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Urlretrieve函数解析 urllib.request.urlretrieve函数解析 urlretrieve(url, filename=None, reporthook=None, data=None) 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件

File / Directory 文件的操作及远程下载

//文件远程下载 WebClient client = new WebClient();    Uri uri = new Uri(url);    client.DownloadFile(Uri uri,String filename); //文件一定得存在不然会报错所以在删除文件时先判断这个文件是否存在 File.Exists(filePath) File.Delete(filePath); //File对文件的操作 File.Move(sourceFile,destFile);//文件的移

JAVA远程下载文件并读取实例方法

简单的文件下载后读取显示,该方法可返回内容的结果集.一般适用于文本文档的下载,以供学习交流. ** * 远程下载文件并读取返回p * @param filePath 文件网络地址 如http://www.baidu.com/1.txt * @return String */ public String DownAndReadFile(String filePath){ String date = new SimpleDateFormat("yyyy-MM-dd").format(new

PHP CURL实现远程下载文件到本地

<?php //$result=httpcopy('http://www.phpernote.com/image/logo.gif'); echo '<pre>';print_r($result); function httpcopy($url,$file='',$timeout=60){ $file=empty($file)?pathinfo($url,PATHINFO_BASENAME):$file; $dir=pathinfo($file,PATHINFO_DIRNAME); !i

树莓派:迅雷远程下载

极好的教程,步骤清晰,照着一步一步来轻松成功,转自:http://mkitby.com/2016/04/06/raspberry-pi-nas-remote-download-xunlei/              谢谢原作者! 第一步,去迅雷网站下载固件.http://luyou.xunlei.com/forum-51-1.html 找到最近的下载就可以了,注意Raspberry Pi 使用的是Xware版本号_armel_v5te_glibc.zip.我是用的是第九周的固件“Xware1.

台达PLC实现远程下载程序

台达PLC实现远程下载程序 日期:2019-04-27                    时间    08:33:57 让物联变得更简单 18-09-2411:25 明明在公司调试没问题的设备一到现场就状况百出,往往需要升级软件来解决问题.工程师就要满世界出差,项目成本增加不少.其实优更好的方案:可以通过为PLC配备远传串口终端实现PLC程序的异地远程下载和监控. 其原理如下: 在传统串口通信的基础上,通过搭载物联网技术实现串口数据的远程交互.常用作PLC远程下载程序.设备远程监控.实验数据

python3 中自带urllib库可下载图片到本地

刚从python3下载图片的语句python2的不太一样,具体python3语句如下: form urllib import request jpg_link = '......'  #图片链接 request.urlretrieve(jpg_link, path)  # path为路径加名字哦(如 ~/workjpg/111.jpg)!!!如果不需要路径,也要有个名字,如 111.jpg就直接保存在当前目录下 还可以这样写 import urllib.request jpg_link = '.

远程下载文件并设置进度显示

def Schedule(a, b, c): """ 进度条显示 :param a:已经下载的数据块 :param b:数据块的大小 :param c:远程文件的大小 :return: """ per = 100.0 * a * b / c if per > 100: per = 100 sys.stdout.write('\r') sys.stdout.write('\t\t%.2f%% - 已下载的大小:%d - 文件大小:%d' %

ThinkPHP Http工具类(用于远程采集 远程下载) phpSimpleHtmlDom采集类库_Jquery筛选方式 使用phpQuery轻松采集网页内容

[php]代码库 view sourceprint? <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 200