ruby - parse - nokogiri xpath
¿Cómo obtener texto de nodo sin hijos? (2)
Uso Nokogiri para analizar la página html con el mismo contenido:
<p class="parent">
Useful text
<br>
<span class="child">Useless text</span>
</p>
Cuando llamo al método page.css(''p.parent'').text Nokogiri devuelve ''Texto útil Texto inútil''. Pero solo necesito ''Texto útil''.
¿Cómo obtener texto de nodo sin hijos?
Debería poder utilizar page.css(''p.parent'').children.remove .
Luego, su texto page.css(''p.parent'').text el texto sin los nodos page.css(''p.parent'').text .
Nota: la page será modificada por la remove
XPath incluye la prueba de nodo text() para seleccionar nodos de texto, por lo que podría hacer:
page.xpath(''//p[@class="parent"]/text()'')
El uso de XPath para seleccionar clases de HTML puede ser bastante complicado si el elemento en cuestión podría pertenecer a más de una clase, por lo que esto podría no ser lo ideal
Afortunadamente, Nokogiri agrega el selector de text() a CSS, por lo que puede usar:
page.css(''p.parent > text()'')
Para obtener los nodos de texto que son hijos directos de p.parent . Esto también devolverá algunos nodos que son solo espacios en blanco, por lo que es posible que tenga que filtrarlos.