无法使用 NodeJS、puppeteer 和 document.querySelector 找到任何标签



我有一个NodeJS Typescript项目,我正试图从动态渲染的网站中获取所有的"p"标记(不是静态HTML,而是向后端发出多个请求以获取一些数据并渲染网页(。我使用的是typescript,在我的lib中有["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"标记。为什么会这样?

注意:提供的url只是一个例子。我尝试过多个不同的网站,但仍然没有定义。

感谢您的帮助!谢谢

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

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

我刚刚用在这里找到的解决方案解决了一个问题,我无法找到并单击带有页面的锚标记。评估waitForFunctionwaitForSelector。解决方案是:

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

然后点击我进入下一页

最新更新