urllib模块中的urlretrieve方法

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)

猜你喜欢

转载自blog.csdn.net/J__Max/article/details/82961856