node.js - 使用 Puppeteer 获取所有 p 标签
问题描述
我正在尝试使用 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();
})();
解决方案
如官方文档中所述:
如果传递给 的函数
page.evaluate
返回一个不可序列化的值,则page.evaluate
解析为undefined
.
您正试图通过返回一个NodeList
(不可序列化的值)querySelectorAll()
,因此,您的page.evaluate()
函数正在返回undefined
。
相反,您可以使用or获取元素ElementHandle
数组:p
page.$$()
page.$x()
const pTags = await page.$$('p');
const pTags = await page.$x('//p');
推荐阅读
- kubernetes - Kubernetes 中的 APOC UUID 支持
- angular - 元素属性_ngcontent键每次刷新
- javascript - 如何让 Combobox onSelect 在 React Bootstrap 模式上工作?
- javascript - Send Grid Email Api 正在发送电子邮件 3 次
- android - 改造 2 POST JSON 对象,响应给出错误代码 400,消息 = nul
- firebase - 无法添加 Firebase 云消息发布后
- reactjs - React 中的清理引用问题
- adb - windows上是否有任何adb等待设备超时方法
- c - 有没有办法让 snprintf 在丢弃的字符处恢复?
- javascript - firebase.storage() 给出未捕获的类型错误