我有一个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'标签。为什么会这样呢?
注意:提供的网址只是一个例子。我已经尝试了多个不同的网站,我仍然得到未定义。
任何帮助都很感激!谢谢!
2条答案
按热度按时间zvms9eto1#
不要使用
page.evaluate
来获取元素,而是使用waitForSelector
/waitForXpath
/$x
/$$
(请参阅Puppeteer文档以了解它们之间的区别:https://devdocs.io/puppeteer/index#pageselector-1):oxiaedzo2#
我刚刚使用解决方案解决了一个问题,找到了here,但我无法找到并单击带有page.evaluate、waitForFunction或waitForSelector的锚标记。解决方案是:
然后点击我进入下一页