〖Python网络爬虫实战㉔〗- Ajax数据爬取之Ajax 分析案例

news2024/11/22 5:42:33
  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)

        即将转为付费专栏,更多详细请看,五一或有优惠活动哦。

关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战㉓〗- Ajax数据爬取之什么是Ajax

🌟上节回顾

我们在前面简单了解了 Ajax 请求的基本原理和带来的页面加载效果,今天,我们和大家谈谈怎么去分析Ajax。

⭐️Ajax 分析案例

Ajax(Asynchronous JavaScript and XML)是一种用于创建异步通信和动态交互的技术。它允许在不刷新整个页面的情况下,向服务器发送HTTP请求并获取响应,从而使Web应用程序更加流畅和响应灵活。在本例中,我们将分析一个使用Ajax技术实现分析的案例。

🌟分析案例

我们这里以我的博客主页为例,和大家介绍一下Ajax分析过程。这里还需要借助浏览器的开发者工具,下面以 Chrome 浏览器为例来介绍,博主用的就是这个浏览器,感觉比较好用。

✨第一步

首先,用 Chrome 浏览器打开我的博客主页链接https://broken.blog.csdn.net/?type=blog,随后在页面中点击鼠标右键,从弹出的快捷菜单中选择,随后在页面中点击鼠标右键,从弹出的快捷菜单中选择) “检查” 选项,此时便会弹出开发者工具,如图所示

我们前面也提到过,这里其实就是在页面加载过程中浏览器与服务器之间发送请求和接收响应的所有记录。

Ajax 其实有其特殊的请求类型,它叫作 xhr。在图中我们可以发现一个名称以get-business-list?page=1开头的请求,其 Type 为 xhr,这就是一个 Ajax 请求。用鼠标点击这个请求,可以查看这个请求的详细信息。

✨第二步

实际上这个请求,就是包含了我的博客里面第一页文章的信息,在后面会提到,我们继续看。

我们可以在右侧可以观察到其 Request Headers、URL 和 Response Headers 等信息。我们在后续的过程中,我们还会发现有的网站在Request Headers 中还有一个信息为 X-Requested-With:XMLHttpRequest,而这个标记请求就是 Ajax 请求。我们在后面遇到再说。

✨第三步

随后点击一下 Preview,即可看到响应的内容,它是 JSON 格式的。这里 Chrome 为我们自动做了解析,点击箭头即可展开和收起相应内容。

观察可以发现,这里的返回结果是我的文章发布信息,包括我们的文章题目和文章发布时间等相关信息。

另外,我们也可以切换到 Response 选项卡,从中观察到真实的返回数据,如图所示:

✨第四步

接下来,切回到第一个请求,也就是我们原始的网页,观察一下它的 Response 是什么,如图所示: 

我们可以看到其代码只有不到150 行,结构也非常简单,只是执行了一些 JavaScript。所以说,我们看到的博客主页的真实数据并不是最原始的页面返回的,而是后来执行 JavaScript 后再次向后台发送了 Ajax 请求,浏览器拿到数据后再进一步渲染出来的。

🌟过滤请求

接下来,我们利用 Chrome 开发者工具的筛选功能筛选出所有的 Ajax 请求。在请求的上方有一层筛选栏,直接点击 XHR,此时在下方显示的所有请求便都是 Ajax 请求了,如图所示:

接下来,不断滑动页面,可以看到页面底部有一条条类型为xhr的请求被刷出,而开发者工具下方也一个个地出现 Ajax 请求,这样我们就可以捕获到所有的 Ajax 请求了。为了更加的直观,我们可以先清楚所以的请求响应。

随意点开一个条目,都可以清楚地看到其 Request URL、Request Headers、Response Headers、Response Body 等内容,此时想要模拟请求和提取就非常简单了。这里面每一个请求都能获取对应的数据内容,也就是我们的博客文章的相关信息。下面,我们展示其中一个。

到现在为止,我们已经可以分析出 Ajax 请求的一些详细信息了,接下来只需要用程序模拟这些 Ajax 请求,就可以轻松提取我们所需要的信息了。下一节,我们就教大家怎么获取数据。

🌟总结

本节我们介绍了 Ajax 的基本原理和分析方法,在下一节中,我们用一个正式的实例来实现一下 Ajax 数据的爬取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git安装及使用

Git简介 Git是什么 Git是目前世界上最先进的分布式版本控制系统(Version Control System)。 Git的功能 Git安装 Git官网:https://git-scm.com/ 打开安装程序后,一直点击下一步,直到以下位置: 这里选择第一项,即…

Spring基础且核心的两大概念——IoC 与 DI

什么是Spring? Spring 全称 Spring Framework,它是一个目前市场上最流行、结构最庞大的开源框架,之所以如此,是因为其有独特且全面的应用场景,这样好的生态才使企业一直对青睐。 注意这句话:Spring 是包含了…

Vector - 常用CAN工具 - CANoe软件安装常见问题

目录 一、确认电脑系统盘是否满足要求,CANoe软件对PC要求如下: 二、确认软件安装包完整 三、确认软件与电脑系统之间的兼容性 四、关闭后台程序 五、安装软件 六、清空临时文件夹 七、尝试在其他电脑上安装 一、确认电脑系统盘是否满足要求&#…

LLVM代码空间优化(一) 编译器自带的优化选项

最近项目组遇到编译安全固件,超出了r52安全核SRAM自带空间问题。急需要找寻方法优化代码体积(代码段大小数据段大小stackbss段)方法,目前初步分析只有代码段&数据段有优化的可能,bss和stack优化空间并不大。有方法…

Unity Audio -- (5)声音的可用性考量

在某些情况下,用户可能会关闭声音或者让音量降低至很小的水平,用户本身的听力情况(用户可能有听力障碍,失聪等情况)也有差异。一个好的设计者应该要考虑到项目的可用性,音频也不例外。本节我们来看看如何能…

由于找不到msvcr100.dll,msvcr100.dll丢失怎样修复

在我们打开游戏或者软件的时候,电脑提示由于找不到msvcr100.dll文件,无法执行此代码是什么意思?msvcr100.dll为什么会丢失,又该如何修复呢?相信这些问题困扰着不少小伙伴,昨天是准备玩吃鸡游戏的时候&#…

被面试官故意刁难,太难了...

今年的金三银四,我和大多数的同行一样加入了升职涨薪的潮水,我早在2个月前就开始准备,我觉得自己在技术方面完全没有问题,于是这两个月我每天在公司摸鱼2小时,回家刷2小时,前前后后刷了几千到面试题&#x…

【LeetCode困难】1263. 推箱子

「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示,其中每个元素可以是墙、地板或者是箱子。 现在你将作为玩家参与游戏,按规则将箱子 ‘B’ 移动到目标位置 ‘T’ &am…

设计模式|代理模式

代理模式介绍 ​代理模式指为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象若不能直接引用另一个对象,而代理对象可以在客户端与目标对象之间起到中介的作用。 代理模式使用场景 普通代理 普通代理模式是指在代理模…

C++的string类使用介绍

string类 1.为什么要学习string类?1.1.C语言中的字符串1.2. 日常中 2. 标准库中的string类2.2 string类(对于单字节的字符)的常用接口说明①string常见的构造函数②string类对象的容量操作③string类对象的访问以及遍历操作④string类对象的修改操作⑤string类非成员…

OrCAD怎样把原理图输出为DXF格式

OrCAD怎样把原理图输出为DXF格式 又有段时间没分享文章了,想想主要还是自媒体写点内容确实不容易,要不断坚持下来更不容易,一直以来也就是凭着“乐于分享”的心在不定时更新。 今天分享的主题是:OrCAD怎样把原理图输出为DXF格式…

标准CSO

Cheng R, Jin Y. A competitive swarm optimizer for large scale optimization[J]. IEEE transactions on cybernetics, 2014, 45(2): 191-204. 1.1 背景介绍 CSO(competitive swarm optimizer)算法是在PSO(particle swarm optimization&a…

医日健“数智药房”解锁购药新模式

“现在买药这么方便,半夜拉肚子过来自助付款、自助取药,还能连线医生,很快就买好了药。”上海市宝山区消费者王先生惊喜地说。近日,宝山区一国大药房医日健 “智慧药房”正式上线营业,该药房实现自助式、无接触就医购药…

如何添加团队成员到你的项目

本文介绍在YonBuilder移动开发中,如何把你的团队成员添加到你的应用中,让团队成员也具备应用的相关配置,代码拉取,打包编译等功能权限。 简单来说把「团队成员添加到你的项目」,一共需要三步大流程操作,具…

基于AT89C51单片机的篮球比赛计时计分器

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87778138?spm1001.2014.3001.5503 源码获取 主要内容: 比赛的计分和计时的工具大多是很简陋的比分牌,十分的不方便。而且大多由于缺少24秒…

Meta-learning综述

文章目录 几个概念1)监督、无监督、弱监督学习(Weakly Supervised Learning)以及 自监督学习(Self-supervised Learning)2)域偏移、域适应、域泛化3)N-way K-shot(Few-shot learning…

【Java虚拟机】JVM诊断神器Arthas入门实操

1.Arthas简介快速入门 阿里开源的Java诊断工具,它可以在运行时对Java应用程序进行动态诊断和调试 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代…

国考省考行测:数字推理题2

国考省考行测:数字推理题2 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧,我讲一起屡屡申论和行测的重要知识点 …

改进YOLOv8 | 特征融合篇 | YOLOv8 应用 BiFPN 结构 | 《 EfficientDet: 可扩展和高效的目标检测》

模型效率在计算机视觉中变得越来越重要。在本文中,我们系统地研究了目标检测中的神经网络架构设计选择,并提出了几种关键的优化方法来提高效率。首先,我们提出了一种加权双向特征金字塔网络(BiFPN),它可以实现简单快速的多尺度特征融合;其次,我们提出了一种复合缩放方法…

从期望最大化(EM)到变分自编码器(VAE)

本文主要记录了自己对变分自编码器论文的理解。 Kingma D P, Welling M. Auto-encoding variational bayes[J]. arXiv preprint arXiv:1312.6114, 2013. https://arxiv.org/abs/1312.6114 1 带有潜在变量的极大似然估计 假设我们有一个有限整数随机数发生器 z ∼ p θ ( z ) …