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.