目标:爬取某个网站上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. 【Fastapi】批量上传文件(文档、图片、视频等)

    [Fastapi]批量上传文件 项目演示 功能说明 编程思路 重要知识点分析 源代码 项目演示 [Fastapi]批量上传文件(文档.图片.视频等) https://www.bilibili.com/ ...

  2. python批量下载网页文件-python使用selenium实现批量文件下载

    背景 实现需求:批量下载联想某型号的全部驱动程序. 一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件.当涉及到多文件批量下载的时候,由于下载所需时间不定,下载的文件名不定,所以有一定的困 ...

  3. Python + Paramiko实现sftp文件上传下载

    最近在测试服务器那块,看了下Paramiko模块,一直都是用FileZilla工具,想了想,持续集成,更新代码可以用Parmmiko完成,还是不错的 Paramiko是用python语言写的一个模块, ...

  4. 批量下载sra文件linux,NCBI下载SRA数据的4种方法

    作为生命科学的从事者,不论是老师或者学生都应该用过NCBI((National Center for Biotechnology Information Search database,一个综合性的生 ...

  5. python批量读取csv文件-Python读取/批量读取文件

    相信很多人的日常工作中,数据源除了来自数据库以外,其次就是外部文件,因此掌握读取文件的技能是相当必要的.在这里特此整理读取外部文件的方法,希望能有助你们快速解决问题.当然本文对读者的假设是有一定的py ...

  6. python下载大文件-python 大文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 大文件上传服务一.前端(http:fex.baidu.comwebuploade ...

  7. python下载大文件-python requests 下载大文件不完整

    目前我有一个脚本, 从帝联的 CDN 外链获取一下文件作为备份. 使用的是 Python 2.7.10 requests 2.8.1 目前碰到一个情况, 使用 requests 下载大文件的时候会出现 ...

  8. 基于Python——实现远程下载sftp文件(只下载.zip文件)

    [背景]远程下载发布包等文件时,总是要使用WinSCP等工具登陆拖动.今天就介绍一种使用python下载文件到本地的方法. [代码实现] 1 import paramiko # paramiko模块, ...

  9. python下的所有文件_python批量复制文件夹下所有文件大小

    python复制文件夹下所有文件 Python---进阶---文件操作---获取文件夹下所有文件的数量和大小 一.####编写一个程序,统计当前目录下每个文件类型的文件数 ####思路: - 打开当前 ...

  10. python批量解压文件,python批量解压zip文件的方法

    python怎样压缩和解压缩ZIP文件 说明 python使用zipfile模块来压缩和解压zip文件 才能最好于孤独中培养:品格最好在世界的汹涌波涛中形成. 代码 import os,os.path ...

最新文章

  1. linux 开机自动启动脚本方法
  2. 一个已婚女人,对于婚姻对于幸福的感悟
  3. 哪款浏览器速度最快_全球知名度非常高的火狐浏览器,它好在哪呢?
  4. 大数据_MapperReduce_从CSV文件中读取数据到Hbase_测试---Hbase工作笔记0022
  5. CTO 职场解惑指南系列(一)
  6. 应该怎样设计和开发软件
  7. urllib携带登录信息
  8. 孪生网络 Siamese Network
  9. SMI-FGSM:空间动量提高对抗迁移性
  10. centos7环境下编译bitcoin
  11. 全家福缺一个人怎么P图上去-免费+效果好
  12. mongodb异常Prematurely reached end of stream原因分析
  13. solr facet查询及solrj 读取facet数据
  14. 程序员如何实现财务自由?
  15. 【C++】利用DFS求解水洼数目问题
  16. 金盾加密视频提取翻录为mp4教程
  17. php7/etc/php-fpm.d 配置
  18. 播放视频出现错误代码0xc00d36c4如何修复?
  19. Python3爬取国家统计局官网2019年全国所有城市(2020年更新)
  20. 棋盘覆盖问题--分治策略

热门文章

  1. windows 同时安装 python2 python3
  2. mysql的sql_mode合理设置
  3. JS中Base64的编码与解码
  4. P2257 YY的GCD (莫比乌斯反演)
  5. 查看端口被哪个进程占用
  6. 重载[] int operator[ ]( )
  7. JAVA基础——最简单的多重循环程序
  8. 没人教的项目管理方法之(明白该干什么) 二、项目章程如何写(上)
  9. 计算机网络——互动百科
  10. 个人小应用服务器安装搭建,HP 360p Gen9 使用winpe安装centos[一]