Селектор .foo-bar dt, .foo-bar dd
должен получить массив всех элементов <dt>
и <dd>
, вложенных в <dl class="foo-bar"></dl>
.
const list = await page.evaluate(() => document.querySelectorAll('.foo-bar dt, .foo-bar dd'));
const key = list[0].innerText;
В качестве альтернативы, вы можете использовать $$()
метод страницы , что по сути document.querySelectorAll()
.Вот пример:
const list = await page.$$('.foo-bar dt, .foo-bar dd');
const key = list[0].innerText;
Вот пример того, как вы можете использовать reduce()
в вашем массиве для преобразования его в нужный вам объект:
// Stubbing the list data for example.
const list = [
{ innerText: 'key1' },
{ innerText: 'value1' },
{ innerText: 'key2' },
{ innerText: 'value2' },
{ innerText: 'key3' },
{ innerText: 'value3' }
]
const test = list.reduce((acc, v, i) => {
// Map even items as properties and odd items as values to prev property.
i % 2 === 0 ? acc[v.innerText] = null : acc[list[i-1].innerText] = v.innerText;
return acc;
}, {});
console.log(test);