urllib模块中的urlretrieve方法
-
在做爬虫的时候接触到了urllib模块中的urlretrieve方法,该方法可以直接将远程数据下载到本地,十分方便。之前爬取网络上的图片到本地,需要自己实现两个步骤,首先需要设置好本地的文件路径,然后再使用urlopen方法打开图片的源地址,下载到该路径。然而使用urlretrieve方法的话,就不用那么麻烦了,可以直接在它的参数里给出图片的url和你的本地路径,就能完成下载的工作 (社会到不行…
-
urlretrieve的具体参数如下:
-
urlretrieve(url, filename=None, reporthook=None, data=None)
-
url: 外部或者本地url
-
filename: 指定存放的本地路径,如果没有指定该参数,则会自动生成一个临时文件来保存数据
-
reporthook: 一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调函数,我们可以利用这个回调函数来显示当前的下载进度
-
data: post到服务器的数据。该方法返回一个包含两个元素的元组(filename,headers),filename表示保存到本地的路径,headers表示服务器的响应头
-
-
-
以下载Python2.7为例:
#!/usr/bin/python
# -*- coding utf-8 -*-
# Project: Data_Collecting
# Author: jiangnan
# Mail: [email protected]
# Date: 2018/10/7
from urllib import request
def callbackFunc(blocknum, blocksize, totalsize):
"""
回调函数
:param blocknum:
已经下载的数据块
:param blocksize:
数据块大小
:param totalsize:
远程文件大小
"""
percent = 100.0 * blocknum * blocksize / totalsize
if percent > 100:
percent = 100
print("%.2f%%" % percent)
url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
SAVE_PATH = './soft/software'
request.urlretrieve(url, SAVE_PATH, callbackFunc)