文章目录

  • 前言
  • 分析
    • 理想状态
    • 实际分析
    • 爬虫实现
    • 其他注意
  • 效果与总结

前言


在我们写文章(博客、公众号、自媒体)的时候,常常觉得自己的文章有些老土,这很大程度是因为配图没有选好。

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

并且,我们搜图片如果去百度,会遇到两种情况:非高清或者带水印。这都是我们所忌讳的东西。笔者此次通过图虫创意抓起高清小图,虽然不是大图,但是在火热的移动端阅读上是足够的
项目效果图(下载部分图片停止)

分析


废话说完了,我们开始分析怎么样才能获取这样的图片呢。

理想状态

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

实际分析

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

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

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

我们发现原来这个搜索url会变化,但是这个查看网页源代码发现并没有我们想要的图片地址。那么我们肯定知道它要么从ajax渲染,或者就藏在js中进行混淆或者加密。我们发现这个xhr中并没有想要的数据,并且他其实藏在js中。其实这个可以猜想到的,因为它的url既然跟着变化那么返回的数据肯定是有区别的。

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

爬虫实现

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

那么我们编写一段代码就能拿到网页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然后下载图片即可!

其他注意

图片下载:

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

爬虫方面

  • 全程不需要登录,下载为高清小图。后续可以考虑研究登录后的大图分享给大家!

其他

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

效果与总结

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


爬虫项目GitHub地址欢迎star!

测试结果:

打开文件夹:

发现nice!你只需要输入关键词即可实现自动下载,虽然是小图,但是效果不错!
移动端公众号和csdn效果!

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

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

  1. 写博客没高质量配图?python爬虫教你绕过限制一键搜索下载图虫创意图片!

    目录 前言 分析 理想状态 爬虫实现 其他注意 效果与总结 @(文章目录) 前言 在我们写文章(博客.公众号.自媒体)的时候,常常觉得自己的文章有些老土,这很大程度是因为配图没有选好. 笔者也是遇到相 ...

  2. Python爬虫 | 利用python爬虫获取想要搜索的数据

    这篇文章主要介绍了利用Python爬虫采集想要搜索的信息(利用某du的接口实现)并且处理掉它的反爬手段,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧. ☀️新人小白博主

  3. 如何用 GitHub Actions 写出高质量的 Python代码?

    这篇博文将与你分享如何在Python项目中搭建起GitHub Actions工作流,以确保你写出的代码既优雅,又符合所有最佳实践,且已经过完备测试. 作者 | Wojciech Krzywiec 译者 ...

  4. 伪原创文章如何写才算高质量

    一.伪原创文章来源 伪原创文章来源可以有很多种方法,如果是产品使用保养类可以去百度知道搜索或者百度经验等,还可以去同行排名靠后的网站中获取,如果是发不到自己的网站内,尽量选择还没有被搜索引擎收录的为好 ...

  5. [翻译Joel On Software]Joel测试:12步写出更高质量代码/The Joel Test: 12 Steps to Better Code

    Joel on Software The Joel Test: 12 Steps to Better Code Joel测试:12步写出更高质量代码 byJoel Spolsky Wednesday, ...

  6. 蛙蛙推荐:如何编写高质量的python程序

    蛙蛙推荐:如何编写高质量的python程序 蛙蛙推荐:如何编写高质量的python程序 - 蛙蛙王子 - 博客园 蛙蛙推荐:如何编写高质量的python程序 如何编写高质量的python程序 目录 代 ...

  7. SEO网站站长如何写一篇高质量的软文

    大部分做SEO的站长不知道如何去写一篇高质量的软文!其实掌握了这些技巧,写高质量软文很简单,也能让网站优化做起来更加的容易. 1.标题选择 在这个行业永远是初级用户看文章的比较多,而有一定经验的SEO ...

  8. 推荐8本高质量的Python书籍,初学者必看

    Python是一种多功能语言.它经常用作Web应用程序的脚本语言,嵌入到软件产品中,以及人工智能和系统任务管理.它既简单又强大,非常适合初学者和专业程序员. 今天,小千选择几本高质量的Python书籍 ...

  9. Python爬虫:AGE动漫下载之 requests 版

    日常跳转: 导入: 分析与代码解释: 打印搜索到的信息 BeautifelSoup4 库使用提醒 小优化 链接解析: 获取视频链接 小优化: 提示: 视频下载: 求大佬赐教 实例源码及结果 结果及下载 ...

最新文章

  1. CvMat,Mat和IplImage之间的转化和拷贝
  2. iOS 获取指定时间的前后N个月
  3. 【Android 逆向】应用数据目录 ( Android 应用数据目录 /data/data/package.name | 存放 SharedPreference 的 shared_pref 目录 )
  4. i2c- sda挂死分析
  5. c语言程序设计第二章的答案,C语言程序设计第二章作业参考答案
  6. 改进同步等待的网络服务端应用 (转)
  7. A Greeting from Qinhuangdao Gym - 102769A 2020ccpc秦皇岛分站赛
  8. iPhone应用程序编程指南(文本和Web)
  9. Android知识体系
  10. ZedGraph属性(转)
  11. Mysql远程连接报错2003 Cant connect toMySQL server on your address解决方案
  12. 论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案
  13. SEO要领:8文章主持技巧(两)
  14. 【通关计划】进入IT培训魔域这个红海,ITbegin为何选择从高校编程教
  15. 《软件工程导论第6版》--张海藩 牟永敏 课后答案及其详解 第7章 实现
  16. 百度螺旋桨PaddleHelix论道“AI+生物计算”,加速推进多维价值释放
  17. 计算机专业窗体的事件何时触发,高三计算机专业VB试题(七)
  18. EDEM资料大全(包含教程、论文、案例、应用)
  19. java释放资源_JAVA 手动释放资源问题
  20. win2012部署asp网站相关

热门文章

  1. 一个简单的集合并级取反问题 !A or !B == !(A and B)
  2. 最少的脚本实现在NSH脚本作业中加入动态参数
  3. 在kitti数据集与nsh_indoor_outdoor.bag,自己数据集(RS_16)上运行LeGo-LOAM
  4. 综合素质计算机的知识考点,综合素质考点知识
  5. Intel微处理器Uncore架构简介
  6. 《HelloGitHub》第 74 期
  7. css3中-moz、-ms、-webkit、-o分别代表的意思
  8. UI设计:使用AI绘制微质感图标
  9. 谷歌浏览器(chrome)无法正常打开网页的解决办法
  10. 史上首例!程序员写的代码,被国家博物馆收藏了!