我试图使用Puppeteer从网站上获取所有段落标签,然后从中提取文本。 pTags
但是始终是一个空数组,我不知道为什么。
这是我的代码。
const puppeteer = require('puppeteer')
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.newyorker.com/news/letter-from-trumps-washington/the-worst-hour-of-his-entire-life-cohen-manafort-and-the-twin-courtroom-dramas-that-changed-trumps-presidency');
const pTags = await page.evaluate(() => Array.from(document.querySelectorAll('p')));
console.log(pTags);
browser.close();
})();
答案 0 :(得分:2)
使用:
const pTags = await page.$$("p");
参考:https://github.com/GoogleChrome/puppeteer/blob/v1.7.0/docs/api.md#pageselector-1
答案 1 :(得分:2)
如果传递给
page.evaluate
的函数返回非Serializable值,则page.evaluate
解析为undefined
。
您尝试通过NodeList
返回Serializable(非querySelectorAll()
值),因此,您的page.evaluate()
函数正在返回undefined
。
相反,您可以使用ElementHandle
或page.$$()
获得p
个元素的page.$x()
数组:
const pTags = await page.$$( 'p' );
const pTags = await page.$x( '//p' );