按照不同的情况,python下载文件可以分为三种:

小文件下载

大文件下载

批量下载

python 小文件下载

流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放的地方。

Python小文件下载流程

以下载上述流程图文件为例子:

Python文件下载

运行完毕后,它将会被保存到当前文件夹的new文件夹里。

python 大文件下载

我们在小文件下载的时候,是将文件内容暂存到变量里,大家想想,下载大文件的时候还这样做会有什么问题?很简单,如果你的内存只有8G,结果要下载文件却有10G那么大,那就肯定无法下载成功了。而且本机软件运行占的内存也比较大,如果你的内存只有8G,实际上剩余可用的内存可能低于2G-4G. 这种情况下怎么下载大文件呢?

流式分块下载

原理:一块一块地将内存写入到文件中,以避免内存占用过大。

Python大文件下载流程

当设置了request.get(stream=True)的时候,就是启动流模式下载,典型特征:在r变量的content被调用的时候才会启动下载。代码如下:

python大文件下载

Python 批量文件下载

所谓批量下载,当然不是一个一个文件的下载了,比如说我们要下载百度图片,如果一个一个下载会出现两种负面情况:

如果某个请求堵塞,整个队列都会被堵塞

如果是小文件,单线程下载太慢

我们的解决方案是使用异步策略。如果你会用scrapy框架,那就轻松许多了,因为它结合了twisted异步驱动架构,根本不需要你自己写异步。不过我们python实用宝典讲的可是教程,还是跟大家说一下怎么实现异步下载:

我们需要使用到两个包,一个是asyncio、一个是aiohttp. asyncio是Python3的原装库,但是aiohttp则需要各位使用cmd/Terminal打开,输入以下命令安装:

pip install aiohttp

注意asyncio是单进程并发库,不是多线程,也不是多进程,单纯是在一个进程里面异步(切来切去运行),切换的地方用await标记,能够切换的函数用async标记。比如下载异步批量下载两个图片的代码如下:

Python异步批量下载

注意:img = await session.get(url)

这时候,在你请求第一个图片获得数据的时候,它会切换请求第二个图片或其他图片,等第一个图片获得所有数据后再切换回来。从而实现多线程批量下载的功能,速度超快,下载超清大图用这个方法可以一秒一张。

python批量下载网页文件-超简单超详细python小文件、大文件、批量下载教程相关推荐

  1. python批量下载文件教程_超简单超详细python小文件、大文件、批量下载教程

    按照不同的情况,python下载文件可以分为三种: 小文件下载 大文件下载 批量下载 python 小文件下载 流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放 ...

  2. video downloadhelper 无时间限制_Python实现超简单【抖音】无水印视频批量下载

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:python乱炖 转载: Python实现超简单[抖音]无水印视频批 ...

  3. python与excel表格-超简单:用Python让Excel飞起来

    超简单:用Python让Excel飞起来 作者:王秀文;郭明鑫;王宇韬 编著 出版日期:2020年07月 文件大小:20.30M 支持设备: ¥45.00在线试读 适用客户端: 言商书局 iPad/i ...

  4. 用python建云盘_实用的Python(3)超简单!基于Python搭建个人“云盘”

    1 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码,而笔者最近发现的一个基于Python的工具updog,可以帮助我们在服务器上搭建类似 ...

  5. python云盘搭建教程_超简单!基于Python搭建个人“云盘”,目前最好用的个人云盘...

    超简单!基于Python搭建个人"云盘",目前最好用的个人云盘 1. 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码 ...

  6. python超简单超基础的免费小说爬虫

    python超简单超基础的免费小说爬虫 需要准备的环境 选取网页 思路 代码 总结 需要准备的环境 1.python 3.0及以上皆可 2.requests库,os,re 选取网页 找一个免费的小说网 ...

  7. 【PDF】超简单!用Python让Excel自动化办公

    Excel作为当今最流行的办公软件之一,在数据编辑.处理和分析方面的表现都非常出色.但是,即使有 Excel的帮助,在面对重复性.机械性的事务时仍然要花费大量时间. 所以今天了解一下这本<超简单 ...

  8. Kali Linux 2021.2在VMware和VirtualBox安装教程 超简单 步骤详细讲解

    Kali Linux 2021.2在VMware和VirtualBox安装教程 超简单 步骤详细讲解 一. 资源下载及工作站安装 二. 使用VMware平台安装 三. 使用VirtualBox平台安装 ...

  9. python性能测试可视化_locust安装及其简单使用----基于python的性能测试工具

    1.已安装python3.6 ,安装步骤略 pip安装: pip install locust 检查locust是否安装成功 locust --help 2.安装 pyzmq If you inten ...

最新文章

  1. 基于Mixin Network的PHP比特币开发教程 之一:创建机器人
  2. 认识python(了解)
  3. jsp connection DB
  4. node项目发送邮件失败
  5. 成功解决absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag 'data_format'
  6. Jelastic Java云端平台
  7. 手脱ACProtect V1.4X(有Stolen Code)之补区段
  8. 活跃了 40 年的 AWK 现在怎么样了?
  9. CSS动画效果构成分析
  10. Linux 命令(94)—— env 命令
  11. java simpleentry_使用Java流生成对象
  12. CAS在Tomcat中实现单点登录
  13. 许多自己正在总结的东东
  14. winrar大全+压缩
  15. OA-ERP操作手册集合。
  16. qt怎么连接oracle,Qt连接Oracle数据库详细介绍(QOCI)
  17. MapReduce编程快速入门
  18. Validation failed判断错误
  19. ti ds90ub953 与ds90ub954 、ds90ub933的调试总结
  20. Termux搭建图形化环境及tk开发

热门文章

  1. Scrapy 模拟登陆知乎--抓取热点话题
  2. UTF-8 带签名和不带签名的区别
  3. mysql删除数据后不释放空间问题
  4. strcat()函数常见问题
  5. Remoting和Webservice有什么区别
  6. Python中的正则
  7. Codeforces Round #521 (Div. 3)
  8. java基础 4 继承(1)访问权限与作用域
  9. ZBrush中如何做不同图案的遮罩
  10. wex5 教程 前端UI编译原理与记事本编辑