我无法获得内心的阻碍
在页面上,我获得了div.className的列表。
但是如何获得$('.className').children('.subClassName')
的价值?
const rows = await page.$$eval('.market_listing_row', items => items)
const prices = await rows.$$eval('.market_table_value.market_table_value > .normal_price', items => items.map(item => item.textContent))
我想获取每个subObject
,但是我不能通过可变行来做到这一点。
尝试
const rows = await page.$$('.market_listing_row', items => items)
const prices = await rows.$$eval('.market_table_value.market_table_value > .normal_price', items => items.map(item => item.textContent))
但是出错了
TypeError:行。$$ eval不是函数
答案 0 :(得分:1)
您有两种可能性。
选项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.$$
函数,该函数导致带有数组元素的数组。因此,您会收到错误消息。
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);
}
答案 1 :(得分:-2)
在本机javascript中,您可以使用.childNodes
访问特定元素的直接子节点。这将是一个节点数组。
仅供参考:https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes
为了获取元素值,可以使用.innerText
提取值。
仅供参考:https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText