最近貌似对好看的图着迷,Pixabay爬不到原图不甘心呀。
百度+知乎了下,于是转向pexels,同样一个高人气图片网站。

颜值逆天,画质不输Pixabay,瞬间感觉有了动力?
不到一下午就爬到高清原图,仅用re\requests几个库,随后又做了个下载器。
之前的博文泛泛带过的多,总感觉少了点什么,这次详细记录一下。

一、过程

1、分析查看
首先点击进入官网,又见瀑布流,点击查看源码。

看到后面这一串,便可知晓网页有嵌入javascript脚本。由于前面踩过坑,立即用requests库检查了下,发现可以正常返回源码中数据,松了一口气。(爬取网站前先检查一下其反爬策略还是很有必要的,之前就曾遇到过返回乱码或者什么都没有的情况)

2、获取原图地址
搜索框中输入’water’,页面跳转到如下:

查看源代码和首页差不多,接着是图片真实地址链接。我在这里绕了几个弯,具体不叙述。

加上前面pixabay的坑,最后得到经验:直接点击官方下载按钮,从对话框中看到图片真实链接,这是最保险的模式。(因为有时“查看模式”并不能提供真实链接,而且有时也并不能下载得到。)

最后发现真实地址有两种形式,还发现图片有jpg和jpeg两种格式:

我第一次以为链接只有第二种,结果辛辛苦苦匹配正则下载的图确是这样的:

有些图并不能打开,又得到教训:爬虫爬下的图打不开时,可能链接地址是错的。

对比源码,发现’data-pin-media’和’src’中皆含地址链接数据,用正则提取,再将images换成static即为链接。图片格式有两种,为了方便后面命名,我还是分成了两段来取。用最简单的(.*?),结果又出问题了:

     #正则是这样的pattern=re.compile(r'<img.*?data-pin-media="https://images.pexels.com/photos/(.*?)/(.*?)?w=800.*?>',re.S)items=re.findall(pattern,result)

每个链接后面都多了个’?’,如何去掉字符串最后一位字符,我记得string类是没有像list类的pop()方法的,又考验python基础。不过这个简单啦~

 for item in items:print 'https://static.pexels.com/photos/'+str(item[0])+'/'+str(item[1][:-1])

3、批量下载
这特么才是关键啊!
网页使用瀑布流模式,是没有页码的,无法像之前那样一页一页遍历。selenium还不熟练,这下如何是好。又倒回去看源码。 然后发现了这一堆!

点击源码中href=”/search/water/?page=2”,页面跳转

地址栏里链接变成 https://www.pexels.com/search/water/?page=2
熟悉的感觉,这几个图好像刚刚那个页面也出现过。。。
回第一页源码中数了下,一共才发现15张缩略图的链接。
然后全明白了,回page1一数正好吻合。
原来获取图片接口在源码里啊,每一页15张,308就是最大页数了。
接着就简单了,又可以循环遍历,避开瀑布流啦^_^

试着下载图片,结果又出幺蛾子了:

目测是爬虫被网站发现了,只好将urllib2改为requests的get方式,设置user_agent和header, user_agent还设了随机数,爬完一页time.sleep(3)。

通过。

过后查了一下,有个帖子总结的很好。

最后用之前Pixabay的模版又做了个下载器。

二、结果

最后来看下结果
已经存在的图自动跳过。

强迫症患者,终于等到10页图全部下载完才睡。。。
本来准备随便拿个图看效果
结果太大了上传不了。。。。
(比如上图第一排最右边的那个图就有27M)

三、代码

源码我上传到Github了:
https://github.com/LUCY78765580/Python-web-scraping/blob/master/pexels.py
这个爬虫还是可以的,就是速度太慢了了,等学了多线程再回来优化。

python 网络爬虫入门(四)— 破解pexels高清原图相关推荐

  1. python网络爬虫汽车之家汽车高清图片

    今天的目的是爬虫汽车之家某款汽车的外观高清图片 所选汽车:红旗H9 爬取页面的网址:红旗H9外观图片 最终效果图: 首先我们需要安装一下需要的库: pip install requests pip3 ...

  2. Python 网络爬虫:爬取4K高清美图

    爬取4K高清美图 这篇爬虫主要是用来爬取网站高清4K图片,这也是笔者学初学爬虫的时候最先写一个的爬虫脚本,现在回过头来重新梳理一下,也算是对从前知识的一个总结,希望对大家有所帮助! 文章目录 爬取4K ...

  3. 学习笔记(47):150讲轻松搞定Python网络爬虫-高速下载王者荣耀高清壁纸(1)

    立即学习:https://edu.csdn.net/course/play/24756/284634?utm_source=blogtoedu 解码: from urllib import parse ...

  4. Python网络爬虫入门

    Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider).网络机器人(Internet Bot).简单地说,抓取万维网(World Wide Web)上所需要 ...

  5. Python网络爬虫入门(一)入门

    Python网络爬虫(一)入门 使用到的库:requestspip+BeautifulSoup4pip+tqdmpip+html5lib python版本:3.8 编译环境:Jupyter Noteb ...

  6. Python网络爬虫(四):selenium+chrome爬取美女图片

    说明: Python版本:Python IDE:PyCharm chrome版本:我的版本63 chromedriver.exe:因为是模拟浏览器访问,chrome需要再下载一个驱动,具体方式在我的上 ...

  7. python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战

    上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...

  8. Python 网络爬虫入门详解

    什么是网络爬虫 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序.众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容. 优先申明:我们使用 ...

  9. Python网络爬虫入门案例

    一.什么是网络爬虫? 网络爬虫又称网络蜘蛛.网络蚂蚁.网络机器人等,本质上是一段程序或脚本,可以自动化浏览网络中的信息,浏览信息时程序会按照一定的规则去浏览,这些规则我们称之为网络爬虫算法. 作用: ...

最新文章

  1. 苹果公司提出Mobile-ViT | 更小更轻精度更高,MobileNets或成为历史
  2. wxWidgets:wxStdOutputStream类用法
  3. 如何找到SAP ABAP odata服务实现的具体backend 系统
  4. 为什么蚂蚁金服架构师建议从Zookeeper开始提升技术水平?
  5. 搜狗AI助力居理新房打造智能售房新模式
  6. Flex样式工作原理
  7. (xd mac直装版)支持m1完美支持m1完整详细教程
  8. ajax调用一般应用程序,【Web前端】---js调用本地应用程序
  9. 解决报错Duplicate keys detected
  10. 支付宝支付流程 及简单实现
  11. SMILES Enumeration
  12. 金融证券基础(三)----回撤
  13. java版阿里云发送短信
  14. DUTOJ-1151: 投硬币
  15. 立创开源|USB示波器+信号发生器+USB存储 三合一
  16. JAVA压缩之LZW算法字典压缩与解压
  17. 微星主板在停过电后无法被远程开机
  18. 本分初心,vivo以科技之力守护“唯一的地球”
  19. jvm学习第十、十一天、十二天—垃圾回收器1、垃圾回收的相关概述2、 垃圾回收相关算法3、 垃圾回收器
  20. 【leetcode-1464】

热门文章

  1. 在线作图丨绘制组间网络分析(Network Analysis)
  2. 《工作五年,决定你一生的财富》
  3. 挤公交闲谈与虚析构函数精讲
  4. Python数据分析入门--Numpy基础学习笔记
  5. Linux_UNIX编程手册-读书笔记-第五十四章(POSIX共享内存)
  6. 线段树合集——杨子曰算法
  7. 企业即时通讯产品免费是趋势而非优势
  8. Anaconda安装和清华源快速安装PyTorch
  9. 如果你想通过自媒体赚钱,平台规则必须了如指掌,才能月入10W+
  10. 星际2 地图编辑器 入门手记