Как извлечь текст из прокомментированного HTML-тега

#ruby #xpath #nokogiri

#ruby #xpath #nokogiri

Вопрос:

У меня есть страница, которую я проанализировал с помощью Nokogiri, но мне нужно получить текст из тега с комментариями. HTML приведен ниже:

 <div class="parent">
  <div class="child">
    <span class="visible"> hello </span>
    <!-- <span class="commented"> hi </span> -->
  </div>
</div>
  

предполагая, что у меня есть страница в виде page объекта Nokogiri, это то, что я пробовал, но это дает мне 0 :

 page.xpath("//div[@class='parent']/div[@class='child']/comment()").each {|comment| comment.text }
  

Выполняется только:

 page.xpath("//div[@class='parent']/div[@class='child']/comment()")
  

дает:

 [#<Nokogiri::XML::Comment:0x3fe466d8d634 " <span class="commented">hi  </span> ">]
  

У меня закончились идеи о том, как извлечь hi текст.

Ответ №1:

Я не эксперт в Nokogiri, но что-то вроде этого, кажется, работает

 comment_node = Nokogiri::HTML(page.at("//div[@class='parent']/div[@class='child']/comment()").text)
comment_node.text.strip
 => "hi" 
  

Комментарии:

1. Да, это так. Мне это нравится xD