usage parse method instalar como ruby nokogiri

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.