木偶人获取所有数据属性值 [英] Puppeteer Get all data attribute values

查看:32
本文介绍了木偶人获取所有数据属性值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的html文档

<div class="inner-column">
 <div data-thing="abc1"></div>
 <div data-thing="abc2"></div>
 <div data-thing="abc3"></div>
</div>

如何获取所有"数据-事物"值(例如,["ABC1","ABC2","ABC3"])在类为.Internal-column的div中?

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();
})();

推荐答案

您可以使用page.$$eval函数进行如下操作:

const dataValues = await page.$$eval(
    '.inner-column div',
    divs => divs.map(div => div.dataset.thing)
);

说明

page.$$eval函数的作用(引用上面链接的文档):

此方法在页面内运行Array.from(document.querySelectorAll(selector)),并将其作为第一个参数传递给pageFunction

如果pageFunction返回承诺,则page.$$eval将等待承诺解析并返回其值。

因此,它将首先查询目标div,然后使用dataset属性将div映射到它们的data-*值。

这篇关于木偶人获取所有数据属性值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆