首页 > 解决方案 > page.evaluate() 和 document.querySelectorAll() 返回未定义或空数组

问题描述

我正在尝试使用 Puppeteer从该站点https://chat.kuki.ai/抓取网络响应。我试过使用page.$evaland page.$$eval。我也试过这个,https: //www.javaer101.com/en/article/17934751.html,Puppeteer page.evaluate querySelectorAll 返回空对象https://github.com/puppeteer/puppeteer/issues/ 489 . 每次,我都会得到一个undefined对象或空数组。我目前的代码是:

const botResponses = await page.evaluate((sel) => {
        let elements = Array.from(document.querySelectorAll(sel));
        let responses = elements.map(element => {
            return element.innerText;
        })
        return responses;
    }, ".pb-chat-bubble pb-chat-bubble__bot");

该代码返回一个空列表。代码中的选择器是有效的选择器,您可以在网站上查看以确认。任何帮助表示赞赏!

标签: javascriptnode.jspuppeteerwebautomation

解决方案


您是否尝试过使用page.$$eval

const botResponses = await page.$$eval(".pb-chat-bubble pb-chat-bubble__bot",el=>el.innerText)

它用更少的代码做你在上面做的同样的事情


推荐阅读