本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙。
1.简单文件下载
使用htttplib2,具体代码如下:
1
2
3
4
5
6
7
|
h = httplib2.Http() url = 'http://www.zzvips.com/ip.zip' resp, content = h.request(url) if resp[ 'status' ] = = '200' : with open (filename, 'wb' ) as f: f.write(content) |
使用urllib,具体代码如下:
1
2
|
filename = urllib.unquote(url).decode( 'utf8' ).split( '/' )[ - 1 ] urllib.urlretrieve(url, filename) |
2.较大文件下载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def down_file(): url = "http://www.zzvips.com/download.abc" file_name = url.split( '/' )[ - 1 ] u = urllib2.urlopen(url) f = open (file_name, 'wb' ) meta = u.info() file_size = int (meta.getheaders( "Content-Length" )[ 0 ]) file_size_dl = 0 block_sz = 8192 while True : buffer = u.read(block_sz) if not buffer : break file_size_dl + = len ( buffer ) f.write( buffer ) f.close() |
在获取下载文件名的过程中,可以解析url,代码如下:
1
2
3
4
|
scheme, netloc, path, query, fragment = urlparse.urlsplit(url) filename = os.path.basename(path) if not filename: filename = 'downloaded.file' |
3.端点续传下载
在使用HTTP协议进行下载的时候只需要在头上设置一下Range的范围就可以进行断点续传下载,当然,首先服务器需要支持断点续传。
利用Python的urllib2模块完成断点续传下载的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/usr/bin/python # -*- coding: UTF-8 -* ''' Created on 2013-04-15 Created by RobinTang A demo for Resuming Transfer ''' import urllib2 req = urllib2.Request( 'http://www.python.org/' ) req.add_header( 'Range' , 'bytes=0-20' ) # set the range, from 0byte to 19byte, 20bytes len res = urllib2.urlopen(req) data = res.read() print data print '---------' print 'len:%d' % len (data) |