目标:爬取某个网站上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的下载量。不知道是不是流量太大了,今天老是断网……

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

教程到此结束~希望对大家有所帮助~

python下载图片到文件夹_Python批量下载网页图片详细教程相关推荐

  1. python os如何创建文件夹_Python怎样创建文件夹,怎样删除文件夹

    Python在存储数据的时候需要创建和删除文件夹.今天小编我就来给大家分享一下Python怎样创建和删除文件夹的经验. 工具/原料 电脑 Python3 方法/步骤 1 首先可以用Python的os模 ...

  2. python如何选择excel文件夹_python如何读取excel文件夹

    python如何读取excel文件夹,内容,单元格,操作,索引,名称 python如何读取excel文件夹 易采站长站,站长之家为您整理了python如何读取excel文件夹的相关内容. python ...

  3. python下载图片到文件夹_python 移动图片到另外一个文件夹的实例

    python 移动图片到另外一个文件夹的实例 如下所示: # -*- coding:utf8 -*- import os import shutil import numpy as np import ...

  4. python下载图片到文件夹_python实现解析markdown文档中的图片,并且保存到本地~

    背景 前阵子简书好像说是凉了,搞得我有点小慌,毕竟我的大部分博客都是放在简书上面的,虽然简书提供了打包导出功能,但是只能导出文字,图片的话还是存在简书服务器上面,再加上我一直想要重新做一个个人博客,于 ...

  5. python批量下载网页文件夹_Python抓取网页批量下载文件方法初探(正则表达式+BeautifulSoup) (转)...

    最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件.对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法 ...

  6. python批量新建文件夹_python批量创建指定名称的文件夹

    本文实例为大家分享了python批量创建指定名称的文件夹具体代码,供大家参考,具体内容如下 继删除多余文件之后,做了一些数据处理,需要重新保存数据,但文件夹的名称又不能改 所以只能创建新的文件夹,换个 ...

  7. 【Python】如何在文件夹里批量分割图片?

    1.Introduction 又是一年四季在轮回,而我终于入门了深度学习! 话说上周终于在Paddle框架下跑通了目标检测,激动了好几天,哈哈哈,深度学习的门槛是真的高(我是真的菜),由于拍的照片有点 ...

  8. 怎样用python批量处理文件夹_python批量处理文件或文件夹

    本文实例为大家分享了python批量处理文件或文件夹的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- import os,shutil import sys imp ...

  9. python批量添加文件夹_python批量新建文件夹

    0.背景 因为要经常写课备课,年级较多(G5-G11),每个年级的课程也比较多(1-100),每次都要新建文件夹,觉的比较麻烦,于是想着去写一个简单小程序去批量自动创建文件夹. 我的思路是这样的: 1 ...

  10. 【Python】如何在文件夹里批量修改文件名?(0001-1000)

    1.Introduction 话说之前探索过如何批量修改文件夹中所有文件的名字,但是结果是这样的: 但是,这个()就很烦,深度学习中好像都是0001-1000这样的,就像下面这样: 2.Materia ...

最新文章

  1. printf()详解之终极无惑-转载
  2. python pyecharts_Python数据可视化之pyecharts
  3. 50个Web设计师超便利的工具
  4. vue保存图片到手机相册_手机照片误删了怎么找回?这三个方法轻松搞定,亲测有效...
  5. Elasticsearch--入门-_get查询数据 乐观锁字段---全文检索引擎ElasticSearch工作笔记006
  6. 不固定宽度的div居中显示
  7. Okhttp对http2的支持简单分析
  8. ckpt为savermodel模型并TRT调用的问题
  9. 燃起图与燃尽图,故事地图和产品线路图分析
  10. IP地址的简明计算方法
  11. mercury路由器重置后服务器无响应,路由器复位不了,重置后进不去如何解决
  12. 微信企业号用户验证php,企业号OAuth2.0验证企业用户接口
  13. 802.11 MAC 基础
  14. FPGA_PCB 设计之一3.3V-LVTTL与3.3V-LVCMOS区别
  15. 批量修复自定义标题带来的word题注错误:错误,文档中没有指定样式的文字
  16. Flutter-使用http请求数据并展示
  17. 2022年,MCU市场有哪些趋势?
  18. 从足球说到鲁伯特之泪
  19. 【方法教程】iPhone应用证书掉了不用怕!删除证书就能打开应用,此方法针对越狱用户...
  20. 维吉尼亚密码-攻防世界(shanghai)

热门文章

  1. WPF 自定义分页控件TextBox分页页数只输入数字验证
  2. Openerp部分学习资料
  3. openerp 打印报表pdf中文乱码解决办法
  4. Android USB串口摄像头实现拍照与识别二维码
  5. 拳皇世界6月13服务器维护,拳皇世界闪退怎么办 对症下药马上好
  6. 选择单页设计的理由是什么?
  7. 日本語 IME输入法(Microsoft 输入法)切换问题
  8. Android——打电话(选择指定手机卡)、发短信
  9. 支付宝快捷支付服务 android,图文详解Android下支付宝快捷支付教程
  10. 父级fixed_相对于父元素的fixed定位的实现