javascript - Puppeteer 问题:如何循环遍历元素句柄?
问题描述
我有一个从 CSS 或 XPath 选择器中提取 textContent 的函数。
有人可以帮助我实现这一目标吗?我很困惑
const nodes = await page.$$('css selector here');
for (const node of nodes) {
const stuff = await extractText(page, node, 'css selector to extract text') || null;
}
所以它只会在节点具有指定的选择器时提取文本,否则输出为空。
解决方案
如果我理解正确,你可以尝试这样的事情:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const html = `
<!doctype html>
<html>
<head><meta charset='UTF-8'><title>Test</title></head>
<body>
<p>Text 1.</p>
<p>Text <span>2</span>.</p>
</body>
</html>`;
try {
const [page] = await browser.pages();
await page.goto(`data:text/html,${encodeURIComponent(html)}`);
const nodes = await page.$$('p');
for (const node of nodes) {
const stuff = await extractText(page, node, 'span') || null;
console.log(stuff);
}
} catch (err) { console.error(err); } finally { await browser.close(); }
function extractText(page, node, selector) {
return page.evaluate(
(node, selector) => node.querySelector(selector)?.innerText ?? null,
node,
selector,
);
}
推荐阅读
- flutter - 如何将这些 FlatButton 转换为 Switch
- javascript - 根据输入字段对数据列表项进行排序
- c# - 寻找多个扩展名和多个字符串格式的文件夹
- bash - 读取bash中命令后显示的表的方法是什么
- google-cloud-platform - Dialogflow 内联编辑器功能异常:Webhook 调用失败。错误:未知
- javascript - 将字符串从 html 表单返回到烧瓶
- android - 我的通知和服务出了什么问题
- python - 如何在for循环变量中分配两个值
- node.js - 我得到 variableName is not a function 错误,但应该是
- pm2 - PM2部署,用户密码?