spa*_*kle 2 javascript webautomation node.js puppeteer
我的 html 文档是
<div class="inner-column">
<div data-thing="abc1"></div>
<div data-thing="abc2"></div>
<div data-thing="abc3"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何在 .inner-column 类的 div 中获取所有“数据事物”值(例如 [“abc1”、“abc2”、“abc3”])?
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.setViewport({width: 1440, height: 1200})
await page.goto('https://www.example.com')
const data = await page.content();
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
您可以像这样使用page.$$eval函数:
const dataValues = await page.$$eval(
'.inner-column div',
divs => divs.map(div => div.dataset.thing)
);
Run Code Online (Sandbox Code Playgroud)
该page.$$eval函数的作用(引自上面链接的文档):
此方法
Array.from(document.querySelectorAll(selector))在页面内运行并将其作为第一个参数传递给pageFunction。如果
pageFunction返回 Promise,page.$$eval则将等待Promise解析并返回其值。
因此,它将首先查询目标 div,然后data-*使用dataset属性将 div 映射到它们的值。
您可以使用该evaluate功能
const data = await page.evaluate(() =>
Array.from(document.querySelectorAll(".inner-column DIV")).map(d => d.getAttribute("data-thing"))
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6402 次 |
| 最近记录: |