python 批量下载网页图片_Python实现多线程批量下载图片

20112694542.jpg

《派森》(Python)3.13 win32 英文安装版

类型:编程工具大小:21M语言:英文 评分:8.7

标签:

立即下载

爬取图片可真的是一个可遇不可求的机会。

有需求就会动力。

目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件夹,每个文件夹包含n个链接所对应的文件夹。

步骤1:获得网页的所有链接,访问所有链接,获得链接里的图片地址。

这一步通过上一篇文章的学习,同时写好正则匹配,就可以简单地完成。

步骤2:根据图片地址下载图片。

下载jpg格式的图片其实很容易。

1 socket = urllib2.urlopen(url)

2 data = socket.read()

3 with open(path, "wb") as jpg:

4 jpg.write(data)

5 socket.close()

其中url为图片地址,path为保存路径。

完成这一步之后,简单的批量下载图片功能就完成了。

但是,下载的过程中有几个问题。

1、下载速度慢。

我们打开网站的时候看到图片的速度在网速不是太慢的情况下其实也不慢,但是用这种方法下载一张图片要等很久,有时却很快。

2、下着下着就卡在那里了。

它就是卡在那里了,不知道要等到什么时候报错。

基于这两个问题,我检索了一些资料,其中这篇文章对这个情况有比较好的说明。

后改进如下。

1 #设定超时时间,单位为秒,放在程序开头即可

2 timeout = 60

3 socket.setdefaulttimeout(timeout)

4

5 #下载图片的时候

6 time.sleep(10)#先sleep,再读取数据

7 socket = urllib2.urlopen(urllib2.Request(imgurl))

8 data = socket.read()

9 socket.close()

10 ...

其实这个改进当时在程序中的体现不是很明显,但是后来我又加入了一个东西:多线程。

python的多线程有几种方法可以实现,通过这篇博文可以对此有所了解。

在这里我采用继承threading.Thread的方法实现多线程。

重载run方法。我这里是每下载一个图片就开一个线程(好像不是太好,囧……)。

1 thread = Download()

2 thread.imgurl = imgurl

3 thread.path = path

4 thread.start()

这个多线程用上以后,整个程序简直就像开足了马力,开始大力地下载。没一会功夫就下载了100多M的图片!

其实我一开始是有顾虑一个问题的,就是为什么线程sleep的时候能够偷偷地占用系统的时间?看看这篇文章的实验。

也就是说,10条线程每个sleep10秒,结果也只是花了差不多10秒的时间。

图片的下载速度很快,虽然中途有一些处理异常的网址,但是速度飞一般的快。(后来增加了一些异常处理)

很快,开始出现异常了,大量的图片下载失败。

研究了很久之后才发现,存储空间不足……

于是,搬到一个10G空闲的分区,开始下载,改善异常处理。

最终完成目标的时候大概完成了8G的下载量。不知道是不是流量太大了,今天老是断网……

同时尝试了视频的下载,这个功能还有待发掘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux中获取redis的map,深入Redis之 bitmap位图和HyperLogLog(五)

bitmap位图我们知道一个字符占1个字节,也就是8个位例如set name bigbig字符串中的3个字符的ASCII码为98 105 113所以big转为二进制就是:01100010|01101001|01100111b i g占了3个字节的大小,一共24个位。bitmap位图可以帮我们获取…

想象中的同居生活 VS 真实的同居生活

1 长颈鹿是怎么喝水的2 为了防止雨伞被偷设计师还是真动了不少脑筋呢-3 睡在这样的床上,晒着太阳,肯定超赞4 如何阻止猫咪上楼5 想象中的同居生活 VS 真实的同居生活 6 硬生生把苹果削成吃不饱也吃不起的样子7 来来来准备瓜子杏仁你点的每个赞&#xff…

抽丝剥茧!Source Generators原理讲解

前言前段时间,我们已经用Source Generators实现了好多功能,比如AutoMapper、API最佳实践。你看完那些实现代码,是不是还有点云里雾里!Source Generators到底是怎么做到的?基础知识Source Generators是编译过程的一部分…

GPON技术概述

GPON技术转载自《电子发烧友》。文章链接请见:http://www.elecfans.com/article/88/171/2009/2009050556028.htmlGPON技术详述介绍GPON 技术之前,先介绍目前也被应用的另一种PON 技术“EPON”。1.EPON技术介绍EPON 又名 GEPON,是由…

linux中断处理汇编入口,Linux中断处理体系结构分析(一)

中断也是一种异常,之所以把它单独的列出来,是因为中断的处理与具体的开发板密切相关,除一些必须、共用的中断(比如系统时钟中断、片内外设UART中断)外,必须由驱动开发者提供处理函数。内核提炼出中断处理的共性,搭建一…

没有违反GPL,他们真的给了源码

文 | Travis出品 | OSC开源社区(ID:oschina2013)【前情回顾】国内智能设备制造商 UMIDIGI 因违反 GPLv2 协议引发争议,并告知开发者“想要源码上门自取”。而后,知名科技博主 Naomi Wu(机械妖姬&#xff09…

有朋友问我为什么这么帅

1 2 重庆的朋友告诉我这是微辣3 我就说我只是虚胖,这下你相信了吧?4 这明明就是打情骂俏好嘛5 这还是那个平常瓶盖都拧不开的女孩子吗6 被一个机器人撩到了!7 这是什么原理?你点的每个赞,我都认真当成了喜欢

python安装详细步骤mac_Mac安装python3的方法步骤

Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。 现在 Mac 上默认安装的 python 版本为 2.7 版本,若 安装 新版本需要 通过 该地址进行下载: https://www.python.org/ftp/python/3.5.0/python-3.5.0…

在Excel中实现下拉列表选择录入

我们在用Excel录入表格数据时,常常会遇到某列数据的值只在几个固定值中选择一个的情况,比如:人的性别列只可能录入男或女,对学历列只可能录入高中、大专、本科、研究生之一等。遇到这类数据,如果我们手工录入&#xff…

你吃的瓜子仁,真是老奶奶磕出来的?!

全世界只有3.14 % 的人关注了爆炸吧知识本文转载自微信公众号一只学霸(ID:bajie203)萌萌不是挺爱吃瓜子仁吗有次他吃的时候大毛在旁边看着看着突然想到一个问题吓得我反思了一下自己是怎么和他们考上同个学校的没思考出来吓得我给大家写了这篇…

持续20年,一场威胁Linux存亡的诉讼终结束

文 | 局长出品 | OSC开源社区(ID:oschina2013)一场持续将近 20 年、曾被认为会威胁 Linux 存亡的诉讼终于迎来了尾声。这场诉讼开始于 2003 年,不过其背后的事件最早可追溯到 1998 年。当时 IBM 和 Santa Cruz Operation&#xff…

shell grep 变量_老司机给出的关于 shell 脚本的8个建议,必收!

这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条。毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈…

不是说好一起长大的吗?

1 仿佛闻到了嫉妒的味道!2 阿拉:不是说好一起长大的吗?3 还有这么小的菠萝蜜??4 你以为它是个橘子其实它并不是5 当我吃到自己喜欢吃的东西时……6 以后吃完小龙虾,千万别扔,有妙用7 这是啥玩意…

javascript:设置URL参数的方法,适合多条件查询

适用场景&#xff1a;多条件查询情况&#xff0c;如下图所示&#xff1a; 通过设置URL参数&#xff0c;再结合数据源控件设置的RUL参数&#xff0c;就能进行简单的多条件查询了。 javascript函数&#xff1a; <mce:script type"text/javascript"><!-- //设置…

SQL点滴19—T-SQL中的透视和逆透视

原文:SQL点滴19—T-SQL中的透视和逆透视透视 今天抽一点时间来看看透视和逆透视语句&#xff0c;简单的说就是行列转换。假设一个销售表中存放着产品号&#xff0c;产品折扣&#xff0c;产品价格三个列&#xff0c;每一种产品号可能有多种折扣&#xff0c;每一种折扣只对应一个…

Magicodes.IE 2.5.5.3发布

2.5.5.32021.08.27修复Append方式导出多个sheet时&#xff0c;发生“Tablename is not unique”错误&#xff0c;具体见#299。2.5.5.22021.08.24添加对Abp模块的包装&#xff0c;具体见#318。Magicodes.IE.Excel.Abp&#xff08;MagicodesIEExcelModule&#xff09;注册IExcelE…

C语言阿斯码,木叶四位上忍设定各不相同,网红负责秀操作,她只需要美就够了...

原标题&#xff1a;木叶四位上忍设定各不相同&#xff0c;网红负责秀操作&#xff0c;她只需要美就够了木叶四位上忍设定各不相同&#xff0c;网红负责秀操作&#xff0c;她只需要美就够了说道忍界网红&#xff0c;那一定就是卡卡西了。卡卡西在《火影》当中的表现俘获了大批小…

80岁COBOL码农:扶我起来,这个bug我会修!

95&#xff05;的 ATM 交易通过 COBOL 程序&#xff0c;80&#xff05;的现场交易依赖于它们&#xff0c;超过 40&#xff05;的银行仍然使用 COBOL 作为其系统的基础。由于年轻人懂 COBOL 的比较少&#xff0c;美国康涅狄格州劳工部正在召回经验丰富的退休 COBOL 人员。来源&a…

小心使用宏

开发过程中&#xff0c;会经常使用宏定义&#xff0c;偶尔还会碰到重复定义的宏&#xff0c;有些时候会造成不良影响。 见如下例子&#xff1a; Test.h #ifndef GUARD_TEST_H #define GUARD_TEST_H class CTest { public: CTest(); virtual ~CTest(); void Display(void); publ…

数据资产纳入国资保值增值考核

首先是国资云近期横空出世&#xff0c;国资云的推广预示着党政及国企未来将坚持私有云技术路线。从天津、四川等省市国资云平台的建设方式来看&#xff0c;未来党政及国企部门的业务系统上云将坚持私有云的技术路线&#xff0c;由此可能对未来国内云计算市场带来深远影响。国资…