目录
前言
分析
理想状态
爬虫实现
其他注意
效果与总结
@(文章目录)
前言
在我们写
文章 (博客, 公众号, 自媒体)
的时候, 常常觉得自己的文章有些老土, 这很大程度是因为配图没有选好.
笔者也是遇到相同的情况, 顺便解决其中一个案例, 给大家一些技术上的参考和借鉴!
并且, 我们搜图片如果去百度, 会遇到两种情况: 非高清或者带水印. 这都是我们所忌讳的东西. 笔者此次通过图虫创意抓起高清小图, 虽然不是大图, 但是在火热的移动端阅读上是足够的!
分析
废话说完了, 我们开始分析怎么样才能获取这样的图片呢.
理想状态
我们的理想状态就是一个网页, 我们的目标网页, 把图片 < img src="xxxxxx"> 直接放到 html 中. 我们的爬虫可以直接解析. 这种情况, 就像你写的博客, 个人网站的图片一样, 简单嵌入.
或者就是通过后台 Ajax 传输图片地址引用. 我们不清楚是否这样!
实际分析
但事实这种肯定会被理想破灭, 因为不可能! 他
以图片为核心业务
, 要你注册, 购买等等, 怎么可能就这么容易的嵌入进入被你找到.
那它到底如何实现呢? 我们分析一下!
首先打开网页, 检查图片, 发现它的网页图片来源不唯一. 有两个主要域名 ice 和 wel, 并且后面的编号还不唯一, 但是可以尝试发现
相同域名不同后缀的图片地址结果相同
!(例如 icweiliimg9 和 icweiliimg / 效果相同).
我们发现原来这个搜索 url 会变化, 但是这个查看网页源代码发现并没有我们想要的图片地址. 那么我们肯定知道它
要么从 Ajax 渲染
, 或者就
藏在 JS 中进行混淆或者加密
. 我们发现这个 xhr 中并没有想要的数据, 并且他其实藏在 JS 中. 其实这个可以猜想到的, 因为它的
url 既然跟着变化那么返回的数据肯定是有区别
的.
那么分析就到这里, 剩下就是 python 爬虫的模拟和解析了.
爬虫实现
前面说到已经知道它的数据源, 我们用 python 编写爬虫需要进行模拟. 经过测试发现它需要进行一些验证, 其中包过 cookie 的 wluuid 字段 (只验证存在, 不验证正确性).
那么我们编写一段代码就能拿到网页 HTML. 但是问题来了. 数据藏在 JS 里面啊!!!
我们只能用正则进行套了!
对于这个 JS, 我们通过
JS=soup.select('script') JS=JS[4]
即可获取.
对于有用数据, 只能正则截取.
- pattern = re.compile(r'window.hits = (\[)(.*)(\])')
- va = pattern.search(str(JS)).group(2)# 解析 JS 内容
但是这个类似 JSON 的串用, 拼接我们无法直接使用 spilt 分组分开, 但是我们可以从} 全部替换成},, 那么就三个,,, 我们就可以分割而不影响其他 JSON 串内,;split 之后
每组都满足 JSON 串格式
, 直接转成 JSON 取值即可!
那么剩下拿到 url 直接构造 url 然后下载图片即可!
其他注意
图片下载:
下载图片有很多图片无名称或者名字相同, 避免这个不下载要进行编号
两个 url 域名需要尝试下载其中一个成功即完成下载!
爬虫方面
全程不需要登录, 下载为高清小图. 后续可以考虑研究登录后的大图分享给大家!
其他
創建图片路径要考虑路径是否存在!
效果与总结
通过上述分析: 编写爬虫:
测试结果:
打开文件夹:
发现 nice! 你只需要输入关键词即可实现自动下载, 虽然是小图, 但是效果不错!
移动端公众号和 csdn 效果!
不难发现, 整个过程就是分析和处理字符串的逻辑难点. 数据结构与算法扎实了处理问题都不难,! 所以, 如果要学习数据结构与算法, 爬虫请关注我吧! 公众号: bigsai
来源: https://www.cnblogs.com/bigsai/p/11438619.html