Python3 爬虫04_urllib.request.urlretrieve

Posted 奔跑的金鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Python3 爬虫04_urllib.request.urlretrieve的主要内容,如果未能解决你的问题,请参考以下文章

python 爬虫--糗事百科段子

用python抓取的网页保存后为啥乱码?

Python3爬虫04(其他例子,如处理获取网页的内容)

Python3爬虫_使用Urllib进行网络爬取

python3 爬虫内涵段子

Python3 爬虫05_安装Scrapy