爬虫请求分析——Ajax请求 python爬取ajax异步加载
qiyuwang 2024-10-21 09:39 20 浏览 0 评论
随着前后端技术的越来越成熟,使用成熟的前端框架来实现前后端分离的项目越来越多,这就导致了如果直接使用 requests 库获取到的页面内容,可能与最终在浏览器呈现的不一致,而且没有任何数据内容。这是因为前后端分离的项目页面上的数据是通过 JavaScript 从服务器获取数据后,然后重新处理后所展示出的内容(前台渲染),而数据是通过 Ajax 方式获取的,整个过程通常都是异步完成的,因此在用户体验上非常好。
基于上述原因,想要爬取这种页面的数据,就需要学会分析网页如何通过接口向后台发送 Ajax 请求,并使用 requests 来模拟浏览器发送 Ajax 请求来获取数据。
什么是 Ajax 请求
Ajax 是一种异步的 JavaScript 请求,其中 x 表示的 XML,但现在 JSON 的使用要多于 XML。利用 Ajax 可以实现在页面不刷新的情况下与服务器进行通讯更新数据,这就避免了因为要更新页面而刷新网址的操作,体验效果更好。
Ajax 的原理
Ajax 的原理非常简单,大致包含三个步骤:
- 发送网络请求
在早先时候,window 下的 XMLHttpRequest 对象是发送 Ajax 请求的原始实现,通过获取 XMLHttpRequest 示例,并监听 onreadystatechange 事件来完成整个异步流程,而且需要考虑浏览器的兼容性,在使用过程中非常麻烦。不过后来的 JQuery 框架提供了非常简便的调用方法,还不需要考虑兼容性,这使得 Ajax 使用易用且越来越广泛。现在非常流行的 Vue 项目,则使用 axios 框架来完成 Ajax 请求。
- 服务器响应数据成功后,解析响应数据
数据解析的过程相对简单,虽然通过 Ajax 可以返回任意形式的数据,这在开发阶段一般前后端会做约定,现今较为流行的是返回 JSON 格式的标准数据,JavaScript 可以非常容易的处理这些响应的数据。
- 通过 JavaScript 更新页面内容
不管是使用原生 JavaScript DOM api 还是使用像 JQuery 这样的库,都是将接口返回的数据重新渲染到页面上,才完成了最终的目的。
如何获取 Ajax 请求
由于 Ajax 请求是在不刷新页面的情况下且异步完成的数据请求。因此我们必须借助浏览器开发工具(有多重打开方式: 快捷键 F12, 页面鼠标右键-检查等等)来获取请求链接的相关内容。这对于我们有 web 开发的经验的同学是非常熟悉的技能,在绝大多数时候需要借助此工具来调试接口。
如上述中的图片中,Ajax 发起的请求在浏览器中显示的类型是 xhr,点击后就可看到请求的各种内容,Ajax 请求响应回的数据既有 HTML 页面内容,也有 JSON 数据,在做接口响应分析时一定要关注。
同时也可以在请求头中看到X-Requested-With: XMLHttpRequest 的描述信息(这不是必有的选项)。
Ajax 响应数据处理
前边我们说过,在 Ajax 的响应数据中,返回的数据不总是 JSON 格式的,因此在做接口响应处理之前,需要对响应内容做基础的判断,防止解析方式错误导致获取到的数据不正确。不过当前流行的前后端分离项目中,以 JSON 作为响应结果的占绝大多数,因此以下以 JSON 结果为例做说明。
以 httbin 中的 json 获取为例,通过点击浏览器网络工具中标头可以获得请求相关的信息,包含请求地址 URL,请求方式 GET 等相关内容。
import requests
import pprint
res = requests.get(
'https://www.httpbin.org/json')
pprint.pprint(res.json())
# {
# "slideshow": {
# "author": "Yours Truly",
# "date": "date of publication",
# "slides": [
# {
# "title": "Wake up to WonderWidgets!",
# "type": "all"
# },
# {
# "items": [
# "Why <em>WonderWidgets</em> are great",
# "Who <em>buys</em> WonderWidgets"
# ],
# "title": "Overview",
# "type": "all"
# }
# ],
# "title": "Sample Slide Show"
# }
# }
如上边的代码示例,我们通过使用 request 访问地址,在响应结果中调用 json 方法即可获取到返回的 JSON 数据,并且自动转换为了dic类型,至此就可以轻松的获取 Ajax 响应中的数据。
在爬取Ajax 数据的时候,最重要的就是分析请求接口,包括每次请求的规律,比如每次请求参数是如何变化的,以及各种参数是如何获取和生成的,还有各种防止爬虫的策略,需要设置请求头的数据等等。
相关推荐
- windows开启telnet服务,检测远程服务端口是否可以连通
-
本文介绍windwos开启telnet服务,telnet服务一般可以用于检测远程主机的某个端口服务是否可以连通,在日常的工作中,我们经常会遇到在本地的windows检测远程服务端口是否可以连通。win...
- 仅在Web登录新华三交换机条件下启用设备Telnet登录方式
-
概述Web登录新华三交换机可以在“网络-服务”页面中启用设备Telnet服务或SSH服务,也可以在“设备-管理员”设置管理员用户的可用服务,然而,在设备Web页面中,无法设置lineVTY用户线【l...
- 思科交换机,路由器如何关闭telnet 开启ssh服务
-
SSH为建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。今天我们就来说说思科交换机,路...
- 智能化弱电行业常用的DOS命令,掌握了你也能成为...
-
前言在做智能化弱电项目时,前端摄像头设备安装结束后,我们会对网络摄像头进行调试,调试过程中会遇到前端摄像头没有图像或者图像出来了画面卡顿的现象。我们会采用ping命令来测试网络的连通性和网络承载能力。...
- 「干货」eNSP模拟器之配置Telnet登录
-
配置说明:配置Telnet,使R2(模拟PC)通过SW1登录到R1进行管理和配置。操作步骤:system-view##进入系统视图[Huawei]sysnameR1##改名为R1[R1]int...
- win11开启telnet服务怎么操作 win11打开telent指令是什么
-
telnet服务是我们在进行远程连接的时候,必须要打开的一项功能。但是有不少用户们不清楚在windows11系统中怎么开启telnet服务。今天小编就使用详细的图文教程,来给大家说明一下打开telen...
- 华三(H3C)交换机Telnet的远程登陆
-
一,配置交换机管理IP[SW1]vlan20//创建管理vlan[SW1]interfacevlan20//进入vlan接口[SW1-Vlanif20]ipaddress192.168....
- win10 telnet命令怎么查看端口是否打开
-
可能大家也会遇到这个问题,win10telnet命令查看端口是否打开的步骤是什么?具体方法如下:1、键盘输入快捷键WIN+R,打开运行窗口。2、输入cmd,点击确定按钮。3、弹出cmd命令行窗...
- Windows 7如何打开Telnet功能(win7系统打开telnet)
-
Windows7默认安装后是没有开启telnet客户端功能的,例如,我们在开始菜单中输入cmd,然后使用telnet命令,会弹出下图提示:‘telnet’不是内部或外部命令,也不是可运行程序或批处理文...
- 为锐捷路由器交换机开启web和telnet,实现轻松管理
-
笔者上一篇文章写了关于锐捷二层交换机配置教程,那么接下来讲一下锐捷的路由交换设备配置web、telnet技巧。同样,今天的教程也是基于命令行,比较简单,适合新手小白进行学习。准备工作配置前准备:con...
- 一文学会telnet命令的用途和使用方法
-
Telnet是一个古老的远程登录协议,可以让本地计算机获得远程计算机的工作能力。它采用了TCP的可靠连接方式,可以连接任何网络互通的远程计算机。不过由于它采用了明文传输方式,存在安全风险,目前已经很少...
- Telnet命令是什么?如何使用?(telnet命令在哪里开启)
-
telnet命令是一个常用的远程登陆工具,使用它,我们可以快捷地登陆远程服务器进行操作。那么如何使用telnet命令呢?首先,我们需要打开telnet功能,任何电脑默认是关闭此功能的,开启方式如下:打...
- win11系统如何开启telnet服务(拷贝版本)
-
我们要知道,Telnet协议是Internet远程登陆服务的标准协议,可以使用户在本地计算机上完成远程主机的工作,不过对于一些刚接触win11中文版系统的用户来说,可能还不知道telnet服务在哪...
- 如何开启telnet客户端(如何开启telnet服务)
-
Telnet协议是TCP/IP协议家族中的一员,是Internet远程登陆服务的标准协议和主要方式,Telnet是常用的远程控制Web服务器的方法。工作中经常用到telnet客户端,但在windows...
- Telnet 是什么,如何启用它?(telnet有什么用)
-
对于Internet等TCP/IP网络,Telnet是一个终端仿真程序。Telnet软件在您的系统上运行并将您的个人计算机链接到网络服务器。它将所有数据转换为纯文本这一事实被认为是易受...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)