如何使用Puppeteer访问React事件处理程序

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

我不确定我是否明白我要的东西,我希望有人能解释。我正在尝试在NodeJS上使用Puppeteer抓取网站。我已经选择了所需的元素并访问了它的属性,但是,我无法访问需要提取所需信息的属性。我想要的信息在下面的绿色框中,但是我无法超越__reactEventHandlers$kq2rgk91p6,因为它只会返回未定义的内容。

enter image description here

我使用了以下选择器,该选择器可以工作并访问所有其他属性,而不是我想要的属性。

    const checked = await page.evaluate(() => document.querySelector(stockSelector));
javascript node.js dom web-scraping puppeteer
1个回答
1
投票

如果我理解正确(没有URL和最少的可复制代码,很难猜测),这就是问题所在:根据文档,各种eval函数只能传输可序列化的数据(大致上,JSON可以处理的数据,有些补充)。您的代码返回一个DOM元素,该元素不可序列化(它具有方法和循环引用)。尝试在浏览器上下文中检索数据,并仅返回可序列化的数据。例如:

const data = await page.evaluate(
  selector => document.querySelector(selector)
    .__reactEventHandlers$kq2rgk91p6.children[1].props.record.Stock,
  selector,
);

如果.Stock属性中的数组可序列化,则将获得数据。

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