¿Cómo busco en HTML generado por Restclient?

¿Cómo puedo buscar una palabra en el HTML generado por el Restclient::Response ¿módulo?

$getresponse = RestClient.get (url)
html=$getadsresponse.body
puts html

Puedo ver el HTML que se genera, pero ¿cómo busco palabras dentro de ese HTML?

preguntado el 21 de mayo de 12 a las 18:05

Debe usar un analizador HTML (Nokogiri, HPricot, etc.). ¿Puede proporcionar un ejemplo de lo que desea recuperar mediante la búsqueda? Es decir, ¿solo desea saber si existe una palabra en el documento o desea devolver los nodos que la contienen? Además, ¿importa si la palabra es un atributo o una etiqueta? -

@PinnyM Quiero buscar una palabra (por ejemplo, alguna palabra) que siempre estará en esta etiqueta <p class="bdy" title="some word"><a href="javascript:void(0);" onmouseover="return wMes_1523188('');" onmouseout="cMes_1523188();" onclick="return false;">some word</a></p> y luego hacer que la prueba pase/falle dependiendo de si obtengo la palabra o no. Además, "alguna palabra" aparece solo dos veces en todo el documento html. Solo pensé en mencionar eso. déjame saber si se requiere alguna aclaración adicional. Gracias de nuevo. -

1 Respuestas

Utilice un analizador de HTML para interpretar correctamente el HTML. Usando Nokogiri con xpath, por ejemplo:

doc = Nokogiri::HTML(html)
found = doc.xpath('//p[@title = "some word"]/a[contains(text(), "some word")]')
found.each do |node|
  puts node.text
end

contestado el 21 de mayo de 12 a las 21:05

¡Muchas gracias! ¿Cómo puedo encontrar qué métodos y accesorios puedo usar en el objeto "encontrado" y el objeto "nodo"? Intenté esto pero no está imprimiendo ningún valor para node.text. La inicialización es correcta porque lo verifiqué con esto doc.search('*').each do |n| puts n.name e imprime los valores. ¿Algún consejo? gracias de nuevo - user1207289

Puede usar métodos de nodo en doc y node - nokogiri.org/Nokogiri/XML/Node.html. encontrado es un NodeSet como resultado de una búsqueda xpath - nokogiri.org/Nokogiri/XML/NodeSet.html. Recomendaría comenzar con un argumento xpath más simple y trabajar desde allí. - PinnyM

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.