У вас есть две возможности для этого.
Вариант 1: просто используйте один селектор
Если вы хотите, чтобы селектор для .class2
находился внутри .class1
, это просто: .class1 .class2
. Таким образом, вы можете просто написать следующий код:
const prices = await page.$$eval('.market_listing_row .market_table_value.market_table_value > .normal_price', items => items.map(item => item.textContent))
Вариант 2. Использование запроса кукловода на дескрипторе элемента
Если вам нужно обработать элемент по какой-либо другой причине, вы также можете выполнить запрос по другому запросу. Ваш второй пример кода уже был близок, но вы использовали функцию page.$$
, которая приводит к массиву с элементами handels. Поэтому вы получаете ошибку.
const rows = await page.$$('.market_listing_row');
for (const row of rows) {
const value = await row.$$eval('.market_table_value.market_table_value > .normal_price', items => items.map(item => item.textContent))
console.log(value);
}