写文章没高质量配图?python爬虫绕开限制一键搜索下载图虫创意图片!
优采云 发布时间: 2020-08-12 16:39文章目录
前言
在我们写文章(博客、公众号、自媒体)的时侯,常常认为自己的文章有些老土,这很大程度是因为配图没有选好。
笔者也是遇见相同的情况,顺便解决其中一个案例,给你们一些技术上的参考和借鉴!
并且,我们搜图片假如去百度,会碰到两种情况:非高清或则带水印。这都是我们所忌讳的东西。笔者这次通过图虫创意抓起高清小图,虽然不是大图,但是在火爆的移动端阅读上是足够的!
项目效果图(下载部份图片停止):
分析
废话说完了,我们开始剖析怎么样能够获取这样的图片呢。
理想状态实际剖析
但事实这些肯定会被理想破灭,因为不可能!他以图片为核心业务,要你注册,购买等等,怎么可能就那么容易的嵌入步入被你找到。
首先打开网页,检查图片,发现它的网页图片来源不惟一。有两个主要域名ice和wel,并且旁边的编号还不惟一,但是可以尝试发觉相同域名不同后缀的图片地址结果相同!(例如icweiliimg9和icweiliimg/效果相同)。
我们发觉原先这个搜索url会变化,但是这个查看网页源代码发觉并没有我们想要的图片地址。那么我们肯定晓得它要么从ajax渲染,或者就藏在js中进行混淆或则加密。我们发觉这个xhr中并没有想要的数据,并且他虽然藏在js中。其实这个可以猜测到的,因为它的url既然跟随变化这么返回的数据肯定是有区别的。
那么剖析就到这儿,剩下就是python爬虫的模拟和解析了。
爬虫实现
前面说到早已晓得它的数据源,我们用python编撰爬虫须要进行模拟。经过测试发觉它须要进行一些验证,其中包过cookie的wluuid数组(只验证存在,不验证正确性)。
那么我们编撰一段代码才能领到网页html。但是问题来了。数据藏在js上面啊!!!
我们只能用正则进行套了!
对于这个js,我们通过js=soup.select('script') js=js[3]即可获取。
对于有用数据,只能正则截取。
pattern = re.compile(r'window.hits = (\[)(.*)(\])')
va = pattern.search(str(js)).group(2)#解析js内容
但是这个类似json的串用,拼接我们难以直接使用spilt分组分开,但是我们可以从}全部替换成},,那么就三个,,,我们就可以分割而不影响其他json串内,;split然后每组都满足json串格式,直接转成json取值即可!
那么剩下领到url直接构造url之后下载图片即可!
其他注意
图片下载:
爬虫方面
其他
效果与总结
通过上述剖析:编写爬虫:
爬虫项目GitHub地址欢迎star!
测试结果:
打开文件夹:
发现nice!你只须要输入关键词即可实现手动下载,虽然是小图,但是疗效不错!
移动端公众号和csdn疗效!