首页 > 编程语言 >写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!

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

时间:2023-01-01 11:01:12浏览次数:59  
标签:python 爬虫 js url 图虫 配图 我们 下载 图片


文章目录

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

前言

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


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

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

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

项目效果图(下载部分图片停止)

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

分析

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


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

理想状态

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

实际分析

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

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

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

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


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

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

爬虫实现

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

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

我们只能用正则进行套了!

对于这个js,我们通过​​js=soup.select('script') js=js[3]​​即可获取。

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


对于有用数据,只能正则截取。

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

但是这个类似json的串用​​,​​​拼接我们无法直接使用spilt分组分开,但是我们可以从​​}​​​全部替换成​​},,​​​那么就三个​​,,,​​​我们就可以分割而不影响其他json串内​​,​​​;split之后​​每组都满足json串格式​​,直接转成json取值即可!

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


那么剩下拿到url直接构造url然后下载图片即可!

其他注意

图片下载:

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

爬虫方面

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

其他

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

效果与总结

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

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


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


​爬虫项目GitHub地址​欢迎star!测试结果:

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

打开文件夹:

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


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

移动端公众号和效果!

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

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


标签:python,爬虫,js,url,图虫,配图,我们,下载,图片
From: https://blog.51cto.com/u_14983647/5982835

相关文章

  • 如何用python“优雅的”调用有道翻译
    文章目录​​前言​​​​分析​​​​分析url​​​​分析参数01​​​​分析参数02​​​​加密分析​​​​模拟请求​​​​注意点​​​​请求代码​​​​执行结果​......
  • [python] 基于paramiko库操作远程服务器
    SSH(SecureShell)是一种网络安全协议,能够使两台计算机安全地通信和共享数据。目前,SSH协议已在世界各地广泛使用,大多数设备都支持SSH功能。SSH的进一步说明见:深入了解SSH。SS......
  • python编程 ——从入门到实践——第四章,操作列表
    1、遍历列表——for循环的基本形式magicians=['alice','david','carolina']forainmagicians:#for循环会读取列表中的第一个字符串,然后和a对应,再打印,然后再读取第......
  • Python之路【第七篇】:线程、进程和协程
    1.Python线程Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。#!/usr/bin/envpython#-*-coding:utf-8-*-importthreadingimporttime......
  • Python面向对象原理分析-元类MetaClass
    metaclass元类1.前戏对象是类实例化的结果classFoo(object):pass#第1步:调用Foo的__new__方法创建空对象。#第2步:调用Foo的__init__方法对对象进行初始化。o......
  • Python之路【第六篇】:socket
    1.Socketsocket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket起源于Unix,而Unix/Lin......
  • Python爬虫学习经历
    requests模块1.处理一个UA反爬importrequestscontent=input("请输入你要搜索的内容:")url=f"https://www.sogou.com/web?query={content}"headers={#添加......
  • 掌握Python中列表生成式的五个原因
    1.引言在Python中我们往往使用列表生成式来代替for循环,本文通过引入实际例子,来阐述这背后的原因。闲话少说,我们直接开始吧!2.简洁性列表生成式允许我们在一行代码中创建一......
  • Python__19--函数调用的参数传递与变量的作用域
    1函数调用的参数传递形参(形式参数):在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参;实参(实际参数):在调用函数的时候输入的值。实际参数和形式参......
  • pycharm配置python环境
    打开pycharm,找到settings中的pythoninterpreter点击addinterpreter,addlocalinterpreter选择python安装路径就可以了......