visitar tour tokyo tokio shizuoka que para nikko los kamakura japonismo japon hacer excursiones excursion desde daibutsu ciudad alrededores ruby parsing nokogiri

ruby - tour - que visitar en los alrededores de tokio



¿Cómo verificar durante el análisis de Nokogiri/Ruby si el elemento existe en la página? (1)

¿Cómo puedo verificar durante el análisis de una página HTML con Nokogiri (Ruby gem) si un elemento, en este caso un div, existe en la página?

En mi página de prueba, existe, por lo que el pp produce el resultado esperado de Nokogiri. Pero la sentencia if no funciona, el == true parece ser la forma incorrecta de hacerlo. ¿Alguna sugerencia para mejorar? Saludos, Chris

pp page.at(''.//div[@class="errorMsg"]'') if page.at(''.//div[@class="errorMsg"]'') == true then puts "Error message found on page" end


Comparando con la true no es el camino correcto a seguir. La llamada at devolverá nil si no encuentra nada, así que:

if page.at_css(''div.errorMsg'') puts ''Error message found on page'' else puts ''No error message found on page'' end

es una forma como nil es falsey en un contexto booleano, pero un Nokogiri::XML::Node no lo será. También cambié a la notación de CSS porque me parece más claro que XPath para cosas simples como esta, pero puedes usar at_xpath o feed XPath o un selector de CSS para que te guste más.

Además, los tres métodos devuelven el primer elemento coincidente o nil por lo que son buenas opciones si solo desea verificar la existencia.