如何通过AJAX动态加载网站进行网页抓取而不会遇到500内部服务器错误

问题描述 投票:0回答:1

我刚刚作为实习生加入,并被分配了抓取 Nvidia (https://www.nvidia.com/gtc/session-catalog/) 会话目录的任务。我在抓取方面没有太多经验,因为我之前曾为简单的静态加载网站做过这种工作。该站点据称使用 AJAX 动态加载。我希望能够获取每个目录的所有数据。 使用我通过特定元素标签进行抓取的非常基本的方法,然后按“显示更多”按钮并重复下一个加载的元素,我已经能够抓取大约 500 个会话。但是,此后它会反复开始抛出错误 XHR 500 Internal Server Error。我已经在使用和不使用无头浏览器(puppeteer)的情况下完成了它。 为什么会发生这种情况以及如何克服这个问题?你们可以查看网站上的元素/标签以更好地理解。 如果可能的话,不使用无头浏览器的答案将是惊人的。

我尝试过基本的“基于元素标签”的抓取,并且与 puppeteer 相同,但两者在 520-540 之后都不起作用。

javascript node.js ajax web-scraping web
1个回答
0
投票

为什么会出现这种情况

这显然是他们的服务器端代码中的一个错误。当尝试加载超过 500 个事件时,他们的 api 显然不起作用。请注意,

500 Internal Server Error
在 500 个事件中发生只是一个巧合。状态代码 500 是一个标准 http 错误代码,表示“出现问题”,与事件数量无关。

如果您想知道对服务器进行了哪些调用,您可以在浏览器中打开开发人员工具并转到网络选项卡。加载下一页的 api 调用是

https://events.rainfocus.com/api/search
。最初会成功,然后一旦
from
参数达到 500 就会失败。

如何克服这个问题

除非您知道其他数据源,否则无法克服这个问题。他们的服务器不会向前端发送超过 500 个事件。您也许可以了解他们的网站是否有一些错误报告流程,但可能性不大。

© www.soinside.com 2019 - 2024. All rights reserved.