爬虫实战(二)爬取Ajax数据(爬取数据的代码)
qiyuwang 2025-04-07 18:38 5 浏览 0 评论
前言
我们这次主要实现对 Ajax 数据的爬取,网站链接为
:https://spa1.scrape.center,该实例网站的数据是通过Ajax 完成的,页面的内容是通过JaveScrip渲染出来的,如下图所示:
我们这次爬取的数据包括电影的名称、封面、类别、上映日期、评分、剧情等信息。需要将数据爬取下来然后保存在 MongoDB 数据库中。
爬取过程
我们通过 requests 直接提取页面,在提取的结果中只有一点 HTML 内容,主要是一些 javascript和css文件,并没有观察到任何电影数据信息。遇到这种情况,说明我们看到的整个页面都是JavaScript渲染得到的,里面的电影数据一般是通过 Ajax 加载的,JavaScript在后台调用 Ajax 数据接口,得到数据之后,再对数据进行解析并渲染呈现出来。想要爬取这个页面数据,直接爬取 Ajax 接口,再获取数据就好了。
爬取列表页
我们分析列表页的 Ajax 接口逻辑,打开浏览器开发者工具,切换到 Network 面板,勾选 Preserve Log并切换到 XHR 选项卡,接着重新刷新页面,再点击第二页,这时可以观察到不仅页面上的数据发生了变化,开发者工具下方页监听到几个Ajax请求,如下图所示:
我们点开一个Ajax请求,其接口的请求
URL为:
https://spa1.scrape.center/api/movie/?limit=10&offset=20,通过观察多个 Ajax 接口的参数,我们总结出这么一个规律,limit 一直为10,正好对应每页10条数据,offset 再依次变大,页数每加1,offset 就加10,因此其代表页面的数据偏移量。这样的话,我们只需要构造出所有页面的 Ajax 接口,就可以轻松获取所有页面的数据了。
我们先定义一个 scrape api 方法,这个方法用来实现对一个 Ajax 接口数据的获取,这是一个通用的方法,返回的内容为一个 JSON 字符串。
接着我们定义一个爬取列表页的方法:acrape index,它接收一个参数page,该参数代表列表页的页码。
这样我们就完成了列表页的爬取,每次发生 Ajax 请求都会得到 10 电影数据信息。
爬取详情页
虽然我们已经可以拿到每一页的电影数据,但是这项数据实际上还缺少一些我们想要的信息,如剧情简介等,所有需要进一步进入详情页来获取这些内容。以查看列表页同样的方法查看详情页调用的Ajax接口,可以发现详情页的接口URL为:
https://spa1.scrape.center/detail/40,后面的40为每部电影的id,接着,我们就定义一个详情页的爬取逻辑,定义一个scrape_detail 方法,它接收一个参数id,先构造一个真实的详情页 Ajax 请求的 URL,再直接调用 scrape api 方法传入这个url 即可。
保存数据
我们将数据保存在 MongoDB数据库中,具体代码如下:
最后定义一个总的调用方法main:
运行脚本,可以看到爬取成功,并成功存储数据,没有任何报错信息。
相关推荐
- # 安装打开 ubuntu-22.04.3-LTS 报错 解决方案
-
#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...
- 利用阿里云镜像在ubuntu上安装Docker
-
简介:...
- 如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本
-
UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...
- Ubuntu 16.10内部代号确认为Yakkety Yak
-
在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...
- 如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)
-
在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
-
IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...
- 如何查看Linux的IP地址(如何查看Linux的ip地址)
-
本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...
- 怎么看电脑系统?(怎么看电脑系统配置)
-
要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...
- 如何查询 Linux 内核版本?这些命令一定要会!
-
Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...
- 深度剖析:Linux下查看系统版本与CPU架构
-
在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...
- 504 错误代码解析与应对策略(504错误咋解决)
-
在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...
- 猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录
-
10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...
- 域名解析的原理是什么?域名解析的流程是怎样的?
-
域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...
- Linux无法解析域名的解决办法(linux 不能解析域名)
-
如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。 此时,需要手动修改配置文件: /etc/resolv.conf 将域名解析服务器手动添加到配置文件中 该文件是DNS域名解...
- 域名劫持是什么?(域名劫持是什么)
-
域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- # 安装打开 ubuntu-22.04.3-LTS 报错 解决方案
- 利用阿里云镜像在ubuntu上安装Docker
- 如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本
- Ubuntu 16.10内部代号确认为Yakkety Yak
- 如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- 如何查看Linux的IP地址(如何查看Linux的ip地址)
- 怎么看电脑系统?(怎么看电脑系统配置)
- 如何查询 Linux 内核版本?这些命令一定要会!
- 深度剖析:Linux下查看系统版本与CPU架构
- 标签列表
-
- 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)