爱站内页反链 爱站首页反链 神马是否收录 360网站安全检测 搜狗是否收录 360是否收录 百度是否收录 百度年收录 网站年龄 百度安全 百度查询 导出链接 网站ip查询 网站ICP备案批量查询 搜狗快照 百度快照 百度反链批量查询 搜狗PR批量查询 谷歌PR批量查询 神马权重批量查询 360移动权重批量查询 站长移动权重批量查询 爱站移动权重批量查询 360权重查询 站长PC权重批量查询 爱站PC权重批量查询 搜狗总收录批量查询 360日收录批量查询 360总收录批量查询 百度月收录批量查询 百度周收录批量查询 百度日收录批量查询 百度网站收录批量查询 获取网站IP 获取网站描述 获取网站关键词 获取网站标题 HTTP状态码 搜狗权重 搜狗反链 神马总收录 百度预计流量 ALEXA排名 360反链

当前位置 博文首页 > xyl192960的博客:Python爬虫——下载文件以及tqdm进度条的使用

最大化 缩小

    xyl192960的博客:Python爬虫——下载文件以及tqdm进度条的使用

    作者:[db:作者] 时间:2021-09-16 15:56

    Python爬虫——下载文件以及tqdm进度条的使用

    本篇内容知识点:
    1.使用tqdm库对可迭代对象进行进度可视化操作
    2.使用requests进行简单爬取并下载文件
    

    可迭代对象什么意思:
    以Python为例,可迭代对象的意思是指存储了元素的一个容器对象,且容器中的元素可以通过iter( )方法或getitem( )方法访问。并不是指某种具体的数据类型。常见的可迭代对象包括:集合数据类型,如list、tuple、dict、set、str等…

    安装:
    pip install tqdm
    pip install requests


    库安装问题在此不过多解释,出现问题自行查找其他资料

    最常见的一套“下载模板”

    import requests
    url='某某文件路径'
    response=requests.get(url) # 向地址发送一个get请求以获取响应对象
    with open('文件名.后缀名','wb') as f:
    	f.write(date)
    # wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,
    #	  即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    #更多文件打开的模式:https://www.runoob.com/python/python-files-io.html
         
    

    tqdm库比较简单易懂的使用方法

    使用tqdm必须知道的几个常见参数:
    iterable:可迭代的对象 默认None
    total:进度条总长度大小(int or float)默认None
    desc:进度条的前缀内容(str)默认None
    unit:进度条的单位(str)默认 it ,实际表带为 it/s

    一、迭代对象的处理

    from tqdm import tqdm
    import time
    for i in tqdm(iterable=range(100),desc='我是前缀',unit='我是单位'):
        time.sleep(0.1) #延时0.1秒 
        pass
    

    效果如下
    一、迭代对象的处理
    二、需要自定义进度条的增长间隔

    from tqdm import tqdm
    import time
    lt=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"]
    with tqdm(iterable=lt,desc='遍历字母',unit='个',total=len(lt)) as pgbr:
        for index,l in enumerate(lt):
            if index%5==0:
                time.sleep(1) # 延时1秒
                pgbr.update(5) # 进度条一次增长5个单位
            print(l)
    

    效果如下
    二、需要自定义进度条的增长间隔
    下载文件结合tqdm用法

    from tqdm import tqdm
    import requests
    url='https://dldir1.qq.com/qqtv/TencentVideo11.14.4043.0.exe'
    response=requests.get(url,stream=True) # 设stream流传输方式为真
    print(response.headers) # 打印查看基本头信息
    data_size=int(response.headers['Content-Length'])/1024/1024 # 字节/1024/1024=MB
    with open('测试.exe','wb') as f:
        for data in tqdm(iterable=response.iter_content(1024*1024),total=data_size,desc='正在下载',unit='MB'):
            f.write(data)
    

    效果如下
    头信息
    下载文件结合tqdm用法

    要点解释:
    1.response.get(stream=True) 这一点必须为True,其详细解释请查iter_content函数的说明,或者找其他资料理解
    2.iter_content(chunk_size) chunk_size参数的理解见下图
    3.TqdmWarning: clamping frac to range [0, 1]full_bar = Bar(frac, … 这个警告我也未找到原因,网络上也未找到相同的问题,有大佬知道的也请告知一声 。(个人猜测与iter_content(chunk_size)的size有关)4
    补充:关于第三点的警告问题,是因为data_siez获得到的是用int()函数转型为整形的变量,所以在除以1024之后会向下取整,导致小于实际的文件大小出现警告,所有可以加一个round()函数进行上去整,保证目标的data_size>=实际的文件大小,就不会出现警告了。

    理解chunk_size
    在这里插入图片描述
    在这里插入图片描述

    因此我将iter_content(chunk_size)->chunk_size理解为一个列表的容量,
    而iterable=response.iter_content(1024*1024)理解为分割字符串的函数,
    将response.content分割为每个元素的长度是1024*1024大小的列表,在对每个部分进行下载。
    这只是助于理解chunk_size的一个方法
    而response.iter_content 是流传输(简单说就是边下载边写入磁盘),如果将chunk_size设置的很小,意味着每次
    下载和存在很小的一部分,下载的速度也会很慢,如果设置的很大,则进度条的进度会错乱,因此我们在确定chunk_size
    大小的时候应该对应文件大小,data_size除以多少,chunk_size就乘以多少,才能使进度条对应。
    
    

    本篇内容仅供学习参考交流,有错误的地方请大家指正

    cs
    上一篇: xyl192960的博客:Python爬虫实例——爬取LOL皮肤图片and保存英
    下一篇:没有了
  • 立即下载 - IIS7 站长工具包
    最新 更多<<
  • xyl192960的博客:Python爬虫——下载文件以及tqdm进度条的使用
  • xyl192960的博客:Python爬虫实例——爬取LOL皮肤图片and保存英
  • xyl192960的博客:Python爬虫实例——2021字体加密反爬对策
  • xyl192960的博客:C1认证:【任务01】修改《植物大战僵尸》存档
  • xyl192960的博客:C1认证:【任务02】网络数据抓包与请求发送
  • xyl192960的博客:Git学习宝典
  • xyl192960的博客:Docker-desktop(Docker桌面版)——入门篇
  • xyl192960的博客:Docker-compose——Dockerfile和Docker-compos
  • ice_elephant的博客:创作的第一个智能婚恋系统源代码,类似于百
  • ice_elephant的博客:一个开发的记单词小程序
  • s的bug_ice_elephant的博客:关于vs2013和vs2015等版本使用sscan
  • ice_elephant的博客:标题拷贝构造函数和赋值构造函数编译器用法
  • ice_elephant的博客:c/c++指针的参数传值实例
  • ice_elephant的博客:消灭新冠2020
  • ice_elephant的博客:Qt信号映射机制初步理解
  • ice_elephant的博客:数据结构算法之顺序表
  • ice_elephant的博客:c/c++实现单链表的增删查改遍历删除
  • ice_elephant的博客:c/c++数据结构算法之循环链表
  • ice_elephant的博客:数据结构算法之双项链表c/c++实现
  • ice_elephant的博客:用c/c++加上easyx图形库制作一个表白小程序
  • ice_elephant的博客:链表的企业级应用之Linux内核链表
  • ice_elephant的博客:数据结构算法之优先级队列
  • ice_elephant的博客:数据结构算法之队列
  • ice_elephant的博客:链式队列实现
  • ice_elephant的博客:数据结构算法之循环队列
  • ice_elephant的博客:数据结构算法之堆的应用
  • ice_elephant的博客:数据结构算法之通过栈实现四则运算
  • ice_elephant的博客:数据结构算法之二叉查找树
  • ice_elephant的博客:通过二叉树来实现哈夫曼编码树
  • ice_elephant的博客:哈希表的应用之基因诊断
    推荐 更多<<
  • 我是女皇不落泪 - 爽朗女生霸气超拽qq个性昵称
  • 码农StayUp:单例模式:5种实现方式
  • 男生专属超霸气网名大全 - 2018最新抖音个性名字好听吸引人

深圳SEO优化公司福田seo网站优化双龙关键词按天扣费民治SEO按效果付费坑梓网站改版同乐网络营销坑梓建设网站深圳至尊标王广州网站排名优化同乐网站制作坑梓网络营销双龙百度关键词包年推广双龙关键词排名包年推广松岗网站优化福田网站seo优化平湖模板网站建设木棉湾建站盐田百搜标王盐田模板制作大鹏外贸网站设计南澳SEO按天扣费大浪建网站同乐网站优化排名罗湖网站开发石岩网站开发南澳模板推广光明建设网站坪山建网站木棉湾网站优化按天计费同乐seo双龙优秀网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化