Puppeteer 获取所有数据属性值
Puppeteer Get all data attribute values
我的 html 医生是
<div class="inner-column">
<div data-thing="abc1"></div>
<div data-thing="abc2"></div>
<div data-thing="abc3"></div>
</div>
如何使用 [=21= 在 div 中获取所有 "data-thing" 值(例如 ["abc1"、"abc2"、"abc3"]) ] .inner-column?
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();
})();
您可以使用evaluate
函数
const data = await page.evaluate(() =>
Array.from(document.querySelectorAll(".inner-column DIV")).map(d => d.getAttribute("data-thing"))
)
您可以像这样使用 page.$$eval 函数:
const dataValues = await page.$$eval(
'.inner-column div',
divs => divs.map(div => div.dataset.thing)
);
说明
page.$$eval
函数的作用(引用上面链接的文档):
This method runs Array.from(document.querySelectorAll(selector))
within the page and passes it as the first argument to pageFunction
.
If pageFunction
returns a Promise, then page.$$eval
would wait for the promise to resolve and return its value.
因此,它将首先查询目标div,然后使用dataset 属性.
将div映射到它们的data-*
值。
我的 html 医生是
<div class="inner-column">
<div data-thing="abc1"></div>
<div data-thing="abc2"></div>
<div data-thing="abc3"></div>
</div>
如何使用 [=21= 在 div 中获取所有 "data-thing" 值(例如 ["abc1"、"abc2"、"abc3"]) ] .inner-column?
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();
})();
您可以使用evaluate
函数
const data = await page.evaluate(() =>
Array.from(document.querySelectorAll(".inner-column DIV")).map(d => d.getAttribute("data-thing"))
)
您可以像这样使用 page.$$eval 函数:
const dataValues = await page.$$eval(
'.inner-column div',
divs => divs.map(div => div.dataset.thing)
);
说明
page.$$eval
函数的作用(引用上面链接的文档):
This method runs
Array.from(document.querySelectorAll(selector))
within the page and passes it as the first argument topageFunction
.If
pageFunction
returns a Promise, thenpage.$$eval
would wait for the promise to resolve and return its value.
因此,它将首先查询目标div,然后使用dataset 属性.
将div映射到它们的data-*
值。