Estoy tratando de usar Titiritero para encontrar precios de sitios web, y la forma en que lo hago es ejecutando un $$eval y un conjunto de declaraciones if. Estoy comprobando que hay un "$" en el innerText , así como un children.length de 0 . Esto funciona decentemente, pero a veces hay elementos secundarios solo para una parte de la cadena (es decir, un $ en negrita pero un número regular). ¿Hay alguna manera de saber qué etiqueta tienen los niños fácilmente? Me gustaría verificar que ningún niño tenga etiquetas <div> . A continuación se muestra mi código:
var prices = await page.$$eval("div, span, p", (priceElements) => { var tmpPrices = []; for (var i = 0; i < priceElements.length; i++) { const priceIndex = priceElements[i].innerText.toLowerCase().indexOf("$"); if ( priceIndex > -1 && priceElements[i].children.length == 0 && priceElements[i].innerText.substring(priceIndex + 1).indexOf("$") == -1 ) { tmpPrices.push(priceElements[i].innerText); } } return tmpPrices; });Y aquí hay un ejemplo de cuando no funciona:
<div class="pricevalue1 accent-color1" style="font-size: 20px;"> <b> <span class="currency-symbol">$</span> 92,950 </b> </div>