找不到任何使用NodeJS、puppeteer和document的标记,querySelector

lg40wkob  于 2023-03-01  发布在  Node.js
关注(0)|答案(2)|浏览(128)

我有一个NodeJS Typescript项目,我试图从一个动态呈现的网站(不是静态HTML,而是向后端发出多个请求以获取一些数据并呈现网页)中获取所有的'p'标记。我使用typescript,并在我的库中有[“es6”,“dom”],我有以下代码(这是我目前在该项目中的所有代码):

import puppeteer from 'puppeteer';

const getLinks = async () => {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    await page.goto('https://webscraper.io/test-sites', { waitUntil: 'networkidle0' });
    const links = await page.evaluate(() => document.querySelectorAll('p'));
    console.log(links);
    await browser.close();
}

然而,当我打印links时,我总是得到undefined。我想这是因为程序找不到任何'p'标签。为什么会这样呢?
注意:提供的网址只是一个例子。我已经尝试了多个不同的网站,我仍然得到未定义。
任何帮助都很感激!谢谢!

zvms9eto

zvms9eto1#

不要使用page.evaluate来获取元素,而是使用waitForSelector/waitForXpath/$x/$$(请参阅Puppeteer文档以了解它们之间的区别:https://devdocs.io/puppeteer/index#pageselector-1):

const links: ElementHandle[] = await mainPage.$$("p");
oxiaedzo

oxiaedzo2#

我刚刚使用解决方案解决了一个问题,找到了here,但我无法找到并单击带有page.evaluatewaitForFunctionwaitForSelector的锚标记。解决方案是:

await page.focus('what-ever-the-selector-is')
await page.keyboard.type('\n');

然后点击我进入下一页

相关问题