• python实现文件下载图片视频


    最近在学习爬虫,在爬取网站时很多时候是需要将图片或视频下载到本地 今天就来说说如何使用urllib将图片保存到本地

    以下代码均为win7  python3.6.*

     使用urllib下载函数保存

    from urllib import request  
      
    # 要下载的图片链接地址  
    img_url = 'https://imgsa.baidu.com/forum/w%3D580/sign=adc0a68a97504fc2a25fb00dd5dfe7f0/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'  
    #url为图片下载链接   
    request.urlretrieve(url=img_url,'./baidu/1.jpg')  

    使用urllib文件方式写入文件

    from urllib import request
     
    #要下载的链接地址
    img_url = 'https://imgsa.baidu.com/forum/w%3D580/sign=adc0a68a97504fc2a25fb00dd5dfe7f0/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'
    # 文件的方式保存下载的图片
    response = request.urlopen(img_url)
    #读取返回的内容
    img = response.read()
    with open('baidu/1.jpg','wb') as f:
        #将图片内容以二进制写入
        f.write(img)

    使用urllib的下载函数下载视频并输出下载进度

    from urllib import request
     
    base_url = 'https://f.us.sinaimg.cn/001KhC86lx07laEy0PtC01040200y8vC0k010.mp4?label=mp4_hd&template=640x360.28&Expires=1528689591&ssig=qhWun5Mago&KID=unistore,video'
    #下载进度函数
    def report(a,b,c):
        '''
        a:已经下载的数据块
        b:数据块的大小
        c:远程文件的大小
        '''
        per = 100.0 * a * b / c
        if per > 100:
            per = 100
        print ('%.2f%%' % per)
    #使用下载函数下载视频并调用进度函数输出下载进度
    request.urlretrieve(url=base_url,finename='weibo/1.mp4',reporthook=report,data=None)

    说明:

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

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

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

    Python 下载超大文件

    Python 下载超大文件链接

    如有错误 欢迎交流

  • 相关阅读:
    CSU-ACM集训-模板-主席树
    Codeforces- Educational Codeforces Round 69
    Codeforces-Round#574 Div2
    CF-1183C Computer Game
    CSU-ACM2019暑假训练(2)
    CSU-ACM2019暑假集训(1)
    2019牛客网第二场-F题
    洛谷P1111 修复公路
    求强连通分量-korasaju算法
    并查集-路径优化+秩优化
  • 原文地址:https://www.cnblogs.com/mswei/p/9325273.html
Copyright © 2020-2023  润新知