【Python3 爬虫】04_urllib.request.urlretrieve

urllib模块提供的urlretrieve()函数,urlretrieve()方法直接将远程的数据下载到本地

urllib语法

image

参数url:传入的网址,网址必须得是个字符串

参数filename:指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)

参数reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。

参数data:指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

下面整个例子是将hao6v的页面抓取到本地

image

# -*- coding:UTF-8 -*-

from urllib import request



"""
urlretrieve参数说明:
1.传入网址,网址的类型一定是字符串

2.传入的,本地的网页保存路径+文件名

3.一个函数的调用,我们可以随便定义这个函数,但是必须得有3个参数
    ①到目前为此传递的数据块数量
    ②是每个数据块的大小,单位是byte,字节
    ③远程文件的大小
"""

def callback(a1,a2,a3):

    """
        @a1:目前为此传递的数据块数量
        @a2:每个数据块的大小,单位是byte,字节
        @a3:远程文件的大小
    """
    download_pg = 100.0*a1*a2/a3
    if download_pg > 100:
        download_pg = 100
    
    print("%.2f%%" %download_pg,)

url = "http://www.hao6v.com/"
local = "C:\\Users\\Administrator\\Desktop\\hellobi.html"
request.urlretrieve(url,local,callback)
image

从上图我们可以看出,我们已经把网页成功爬取到本地,在本地桌面可以看到该页面,使用浏览器打开以后跟原页面一模一样(如果有CSS,则页面效果存在差异)

image

posted @ 2018-03-24 21:57  OLIVER_QIN  阅读(5844)  评论(0编辑  收藏  举报