Простейшее однострочное решение - использовать page.$$eval
для сбора всех <span>
элементов в контексте страницы - он запускает Array.from(document.querySelectorAll(selector))
в фоновом режиме. Поскольку он возвращает массив элементов, вы можете перебирать их с помощью Array.map
, чтобы получить innerText
каждого в конце.
const spanTexts = await page.$$eval('span', elements => elements.map(el => el.innerText))
console.log(spanTexts)
В пределах указанного c <div>
вы можете создать подстановочный знак между элементами #id-name
и span
с помощью универсального селектора (*
). Вы можете узнать больше о том, как создавать селекторы CSS самостоятельно здесь, на MDN .
const spanTexts = await page.$$eval('#ctl00_ctl00_ctl00_cphMain_cphMiddle_cphCenterColumn_uctDiveInfoDisplay_TabContainer1_tabScubeCoursesOffered_ScubaCoursesViewDIV * span', elements => elements.map(el => el.innerText))
console.log(spanTexts)