按照不同的情况,python下载文件可以分为三种:
python 小文件下载流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放的地方。 ![]() 以下载上述流程图为例子: ![]() 运行完毕后,它将会被保存到当前文件夹的new文件夹里。 python 大文件下载我们在小文件下载的时候,是将文件内容暂存到变量里,大家想想,下载大文件的时候还这样做会有什么问题 流式分块下载原理:一块一块地将内存写入到文件中,以避免内存占用过大。 ![]() 当设置了request.get(stream=True)的时候,就是启动流模式下载,典型特征:在r变量的content被调用的时候才会启动下载。代码如下: ![]() Python 批量文件下载所谓批量下载,当然不是一个一个文件的下载了,比如说我们要下载百度图片,如果一个一个下载会出现两种负面情况:
我们的解决方案是使用异步策略。如果你会用scrapy框架,那就轻松许多了,因为它结合了twisted异步驱动架构,根本不需要你自己写异步。不过我们python实用宝典讲的可是教程,还是跟大家说一下怎么实现异步下载 我们需要使用到两个包,一个是asyncio、一个是aiohttp. asyncio是Python3的原装库,但是aiohttp则需要各位使用cmd/Terminal打开,输入以下命令安装: pip install aiohttp 注意asyncio是单进程并发库,不是多线程,也不是多进程,单纯是在一个进程里面异步(切来切去运行),切换的地方用await标记,能够切换的函数用async标记。比如下载异步批量下载两个图片的代码如下: ![]() 注意: img = await session.get(url) 我们的文章到此就结束啦,如果你希望我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦 |
|
来自: Four兄 > 《python爬虫》