Python编程快速上手(七)Unsplash批量下载器
程序描述
V1.0
输入关键字搜索图片,模拟页面下拉获取更多图片,页面加载完成后获取图片链接并下载至指定文件夹。
V2.0
解决了V1.0版本存在的两个严重问题。更改为深入二级链接获取图片,从而不再需要等待一级页面加载完毕。

涉及知识点
- selenium
- bs4
- iter_content()
- javascript
V1.0存在的问题 & V2.0的解决方法
- 获取图片链接需要预先对页面进行加载,下载图片时相当于进行了二次加载,造成了不必要的网络和时间占用。
- 即便给予充足的加载时间,页面也不能完全加载,导致捕获到的图片有一千余张而实际有效的图片不足十张。
对于一个图片爬虫来说,连图片都爬不下来得是件多羞耻的事情。所以在面对V1.0版本的诸多不足时,我的当务之急是解决第二个问题,其次再是对程序进行优化。幸运的是,就像问题总是相伴而生一样,解决了第二个问题时,我恰巧也把第一个问题解决了。
首先,疑惑于明明加载了那么久页面却会「获取不到图片链接」,我将加载出来的页面保存下来查看。
page = open(os.path.join('pics', 'saved.html'),'wb')
page.write(soup.encode('utf-8'))
打开
saved.html
后,我发现虽然图片链接未能加载出来,但是图片所指向的二级链接却赫然在目。
打开二级链接,不出意外,就是我求之而不得的图片。
自然,我就想到,如果在当前这个一级页面不能得到图片链接,是不是可以通过进入二级链接获取图片,而且由于二级链接所指向的页面只有一张图片,图片加载的成功率必然也很高。
如此这般,problems solved
Python编程快速上手(七)Unsplash批量下载器的更多相关文章
- Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘
Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...
- 《Python编程快速上手 —让繁琐工作自动化》|百度网盘免费下载|Python自动化办公
Python编程快速上手—让繁琐工作自动化 提取码:u8vj 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过 P ...
- 入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码
入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...
- Python编程快速上手-让繁琐工作自动化-第二章习题及其答案
Python编程快速上手-让繁琐工作自动化-第二章习题及其答案 1.布尔数据类型的两个值是什么?如何拼写? 答:True和False,使用大写的T和大写的F,其他字母是小写. 2.3个布尔操作符是什么 ...
- python经典书记必读:Python编程快速上手 让繁琐工作自动化
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/69/ 来源:python黑洞网,专注 ...
- Python 编程快速上手 第七章总结
前言 在 Word 软件中,我们总是习惯使用 CMD+F 用来查找和替换文本,但是,正如作者所说: 虽然计算机可以很快地查找文本,但你必须精确地告诉它要找什么. 我们往往想要查找一类文本,比如一段文本 ...
- 《python编程快速上手》
第一部分 编程基础 @表达式 ** % // @ >>> int(3.4) 3 >>>round(3.555,2)3.56 @判断条件时:0和0.0和‘’都是Fal ...
- Python编程快速上手——让繁琐工作自动化学习笔记
第一部分 基本语法 1.字符串不能直接和数字相加,要用str()转一下:但是可以和数字相乘,用于表示多个字符串复制:字符串不能和浮点数直接结合,字符串可以和字符串直接相加: 2.输入函数用input( ...
- Python 编程快速上手 第十四章 处理 CSV 文件和 JSON 数据
前言 这一章分为两个部分,处理 CSV 格式的数据和处理 JSON 格式个数据. 处理 CSV 理解 csv csv 的每一行代表了电子表格中的每一行,每个逗号分开两个单元格csv 的内容全部为文本, ...
随机推荐
- Relation.js——基于pixi.js的拓展模块之人物关系图谱
出于[重构基于D3的关系图谱项目]的目的,在看完pixi.js之后,并且网上又没有现成的基于webgl的关系图谱js库,于是,本人决定自己写一个. 因为平常要工作的原因,进度可能有点慢,但是githu ...
- Oracle(一)安装
一.到官网或者哪里去下载Oracle,我下的是winX64的11g版本 官网:https://www.oracle.com/technetwork/database/enterprise-editio ...
- SocketServer模块 《Python核心编程(第3版)》——2.5
本文内容参考文章地址: https://m.aliyun.com/yunqi/articles/93088/ SocketServer模块 SocketServer是标准库中的一个高级模块(Pytho ...
- 【thrift】thrift入门初探--thrift安装及java入门实例
转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...
- Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录
此为在网络上找来的,觉得很好! 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令来切割日志 ps -def | grep ...
- Linux交叉编译工具链和模块编译
所有的工具: aarch64-poky-linux-addr2line aarch64-poky-linux-c++filt aarch64-poky-linux-g++ aarch64-poky-l ...
- 使用jsonschema2pojo-maven-plugin 插件根据json文件生成代码
jsonschema2pojo 是一个不错的工具,可以帮助我们快速的根据json 文件生成pojo代码,提高开发效率,以下为简单的 使用maven 插件进行代码生成 使用maven 插件配置 < ...
- 使用IAR编译STM8S 怎样生产烧录文件
IAR编译后能够生成的烧录文件格式有4中,例如以下 第一种是Motorola,其生成文件和STVD生成烧录文件.s19格式一样的,即能够通用 另外一种是16进制,keil等等常都用到的. 第三种是 ...
- windows上如何安装Sqlite
一.安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下载下来sqlite-dll-win ...
- Android Studio中 ADB WIFI插件进行无线调试实践
首先要确保电脑和手机在同一个局域网中.具体步骤如下 1.Android Studio中安装ADB WIFI插件.安装成功后重启Android Studio.(没有安装过插件的同仁,请自己搜索) 2.手 ...