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

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

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

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

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

为什么会出现这种情况

这显然是他们的服务器端代码中的一个错误。当尝试加载超过 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.