以前没有学习python时,想要下载一个网上的文件,就只能把浏览器打来,找到文件的下载链接,将地址放进去。
现在学了python后,才发现,原来下载一个东西是十分简单的。
举个例子吧。我们来看这张图片和它的URL。
小编给大家推荐一个学习氛围超好的地方,Python学业交流:四七四五三四九五一!两千多小伙伴了吧!所以看到了快点进来吧,不然就满了!里面资料都是大家贡献的,几百个G了!什么PDF,零基础入门,爬虫,web 数据分析都是有视频加源码的。而已里面好多学生,工作了的,遇到bug了可以寻求帮助,遇到解决不了的问题也可以和大家交流,从而解决自己多时的问题。这也是一件乐事,我们不做外包,只为共同进步!
现在我想要下载这张图片,其实是一件非常简单的事,只需要简单几行代码就可以了
曾经我把这个代码演示给同学看,他说怎么这么麻烦,直接右键保存不就行了。我反问道,如果让你下载一千一万张图片,你还能手动保存吗?我们学编程的目的其中之一,就是让电脑帮我们做烦琐的事情。
言归正传,那么怎么写一个下载器呢?和之前的流程一样,先获取URL,然后使用requests模块下载,然后,把文件保存下来。那么问题来了,如果我们下载的文件过大,比如我之前用多线程下载过百度网盘上的文件,效果确实很好,一个线程100kb/s,开20个线程,就可以达到2m/s,非常好用,可是遇到一个问题,就是文件过大,如果将数据,现在下载再写入文件中,对电脑不友好,因为这是下载的数据会先保存在内存里,很快内存就不够用了。
找了很久都没有找到好的解决方法,怎么才可以向下载器一样边下载边写入文件呢。后再终于找到了解决方法。
只要使用iter_content方法就可一点迭代获取数据了。
来看完整的代码
领取专属 10元无门槛券
私享最新 技术干货