Python爬虫实战案例——第五例

news/2024/7/19 12:27:32 标签: 爬虫, python

文章中所有内容仅供学习交流使用,不用于其他任何目的!严禁将文中内容用于任何商业与非法用途,由此产生的一切后果与作者无关。若有侵权,请联系删除。

目标:采集三国杀官网的精美壁纸

地址:aHR0cHM6Ly93d3cuc2FuZ3Vvc2hhLmNvbS9tc2dzL21XYWxsUGFwZXI=

在这里插入图片描述

从开发者工具中进行分析

在这里插入图片描述

可以看到图片是位于一个class值为galary_wrapperdiv标签之中,所以我们可以先考虑数据是否是在这个html页面中响应而非异步加载的,从响应文本中搜索一下galary_wrapper看看是否有相应数据。

在这里插入图片描述

这就很润了,一共九张图片都在当前这个html页面中,那么就直接xpath解析就好了,但紧接着后边页面的图片又怎么来呢。

在这里插入图片描述

点击“查看更多”然后才会加载出来新的图片,毫无疑问,除了第一页之外的图片都是异步加载来的,所以我们来抓包分析一下。

在这里插入图片描述

可以看到点击之后抓到的包中返回了图片url,那么也就是说通过这个包我们就可以拿到第二页的图片地址了。那么第三页呢,它的url必然和第二页是有着一定的共同之处的。再点击“查看更多”然后观察第三页和第二页两个包的url。两页的url地址如下:

第二页:https://www.sanguosha.com/msgs/mWallPaper/cur/2
第三页:https://www.sanguosha.com/msgs/mWallPaper/cur/3

可以看到只有最后的数字发生了变化,前面的不管是域名还是路径都没有任何的区别。所以我们只需要修改最后的数字就可以获取到图片url了。但是要注意,第一页的图片只能通过html页面获取,不能通过这个接口获取。所以我们请求的时候需要判断请求的是第一页或其他。伪代码如下:

if 页码 ==  1:
	请求https://www.sanguosha.com/msgs/mWallPaper并解析
else:
	请求https://www.sanguosha.com/msgs/mWallPaper/cur/%d
	解析图片地址

最后,将所有放到列表中的图片url遍历出来进行请求并将图片保存到本地即可。

完整代码请移步:https://gitee.com/shuailiuquan/spider-code/tree/master/


http://www.niftyadmin.cn/n/5049300.html

相关文章

44.java教程

目录 一、Java 教程。 (1)我的第一个 JAVA 程序。 (2)Java 简介。 (2.1)java简介。 (2.2)主要特性。 (2.3)发展历史。 (2.4)J…

蓝桥杯打卡Day15天

文章目录 买不到的数目错误票据 一、买不到的数目OJ链接 本题思路:引理:给定a,b,若dgcd(a,b)>1 ,则一定不能凑出最大数。结论:如果 a,b均是正整数且互质,那么由 axby,x≥0,y≥0 不能凑出的最大数是 ab−a−b。 证…

06贪心:跳跃游戏

06贪心:跳跃游戏 55. 跳跃游戏 刚看到本题一开始可能想:当前位置元素如果是 3,我究竟是跳一步呢,还是两步呢,还是三步呢,究竟跳几步才是最优呢? 其实跳几步无所谓,关键在于可跳的…

kubernetes问题(一)-探究Pod被驱逐的原因及解决方法

1 k8s evicted是什么 k8s evicted是Kubernetes中的一个组件,主要用于处理Pod驱逐的情况。在Kubernetes中,当Node节点资源不够用时,为了保证整个集群的运行稳定,会按照一定的优先级和策略将其中的Pod驱逐出去。这时就需要一个组件…

leetcode Top100(24) // 环形链表2

环形链表 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内…

Unity 3D 简易对象池

依赖于UniTask(访问Github)依赖于Addressable资源管理(通过UPM安装) using Cysharp.Threading.Tasks; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceMana…

【Linux学习】03Linux用户和权限

Linux(B站黑马)学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 文章目录 Linux(B站黑马)学习笔记前言03Linux用户和权限认知root用户root用户(超级管理员)su和exit命令sudo命令 用户、用户…

java对象半初始化问题是怎么回事

文章目录 一、前言1. 什么是Java对象半初始化2. 对象半初始化问题引发的影响 二、对象半初始化问题详解1. Java对象创建过程 2. 对象半初始化问题产生的原因三、实例分析:对象半初始化问题的表现1. 单线程环境下的半初始化2. 多线程环境下的半初始化 四、解决方案及…