目录
- 前言
 - 
                
                  分析
                
                
- 理想状态
 - 爬虫实现
 - 其他注意
 
 - 效果与总结
 
@(文章目录)
前言
          
            
          
          
           在我们写
          
            文章(博客、公众号、自媒体)
          
          的时候,常常觉得自己的文章
          
            有些老土
          
          ,这很大程度是因为
          
            配图
          
          没有选好。
        
笔者也是遇到相同的情况,顺便解决其中一个案例,给 大家一些技术上的参考和借鉴 !
          并且,我们搜图片如果去百度,会遇到两种情况:
          
            非高清
          
          或者
          
            带水印
          
          。这都是我们所忌讳的东西。笔者此次通过图虫创意抓起高清小图,虽然不是大图,
          
            但是在火热的移动端阅读上是足够的
          
          !
        
分析
理想状态
- 
            我们的理想状态就是一个网页,我们的目标网页,把图片
            
直接放到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
          
          
          
            
          
        

