写文章没高质量配图?python爬虫绕过层层限制一键搜索下载图虫创意图片!

前言

在这里插入图片描述
在咱们写 文章(博客、公众号、自媒体)的时候,经常以为本身的文章 有些老土,这很大程度是由于 配图没有选好。

笔者也是遇到相同的状况,顺便解决其中一个案例,给你们一些技术上的参考和借鉴html

而且,咱们搜图片若是去百度,会遇到两种状况:非高清或者带水印。这都是咱们所忌讳的东西。笔者这次经过图虫创意抓起高清小图,虽然不是大图,可是在火热的移动端阅读上是足够的java

分析

在这里插入图片描述
废话说完了,咱们开始分析怎么样才能获取这样的图片呢。

理想状态

  • 咱们的理想状态就是一个网页,咱们的目标网页,把图片<img src="xxxxxx">直接放到html中。咱们的爬虫能够直接解析。这种状况,就像你写的博客,我的网站的图片同样,简单嵌入
    在这里插入图片描述
  • 或者就是经过后台ajax传输图片地址引用。咱们不清楚是否这样!

实际分析

但事实这种确定会被理想破灭,由于不可能!他以图片为核心业务要你注册,购买等等,怎么可能就这么容易的嵌入进入被你找到。python

  • 那它到底如何实现呢?咱们分析一下!

首先打开网页,检查图片,发现它的网页图片来源不惟一。有两个主要域名icewel,而且后面的编号还不惟一,可是能够尝试发现相同域名不一样后缀的图片地址结果相同!(例如icweiliimg9icweiliimg/效果相同)。 git

在这里插入图片描述
咱们发现原来这个搜索url会变化,可是这个查看网页源代码发现并无咱们想要的图片地址。那么咱们确定知道它 要么从ajax渲染,或者就 藏在js中进行混淆或者加密。咱们发现这个xhr中并无想要的数据,而且他其实藏在js中。 其实这个能够猜测到的,由于它的 url既然跟着变化那么返回的数据确定是有区别的。

那么分析就到这里,剩下就是python爬虫的模拟和解析了。github

爬虫实现

前面说到已经知道它的数据源,咱们用python编写爬虫须要进行模拟。通过测试发现它须要进行一些验证,其中包过cookiewluuid字段(只验证存在,不验证正确性)。ajax

那么咱们编写一段代码就能拿到网页html。可是问题来了。数据藏在js里面啊!!!算法

咱们只能用正则进行套了! 对于这个js,咱们经过js=soup.select('script') js=js[4]便可获取。 json

在这里插入图片描述
对于有用数据,只能正则截取。

pattern = re.compile(r'window.hits = (\[)(.*)(\])')
 va = pattern.search(str(js)).group(2)#解析js内容
复制代码

可是这个相似json的串用,拼接咱们没法直接使用spilt分组分开,可是咱们能够从}所有替换成},,那么就三个,,,咱们就能够分割而不影响其余json串内,;split以后每组都知足json串格式直接转成json取值便可! cookie

在这里插入图片描述
那么剩下拿到url直接构造url而后下载图片便可!

其余注意

图片下载:数据结构

  • 下载图片有不少图片无名称或者名字相同,避免这个不下载要进行编号
  • 两个url域名须要尝试下载其中一个成功即完成下载!

爬虫方面

  • 全程不须要登陆,下载为高清小图。后续能够考虑研究登陆后的大图分享给你们!

其余

  • 創建图片路径要考虑路径是否存在!

效果与总结

经过上述分析:编写爬虫:

在这里插入图片描述
在这里插入图片描述
github地址

测试结果:

在这里插入图片描述

打开文件夹:

在这里插入图片描述
发现nice!你只须要输入关键词便可实现自动下载,虽然是小图,可是效果不错! 移动端公众号和博客效果!
在这里插入图片描述

不难发现整个过程就是分析和处理字符串的逻辑难点。数据结构与算法扎实了处理问题都不难,!因此,若是要学习数据结构与算法,爬虫请关注我吧!公众号:bigsai

相关文章
相关标签/搜索