如何使用 Nokigiri 在 h4 标签跳过它们之间的任何其他标签后选择第一个 ul 标签?

How to pick first ul tag after h4 tag skipping any other tag between them, with Nokigiri?

我正在尝试获取标签 h4 之后的第一个 ul 标签并跳过 div 标签:

<h4>
 <a>
  "Q1. some text"
 </a>
</h4>
<ul>
 <li>answer</li>
 <li>answer</li>
 <li>answer</li>
</ul>

<h4>
 <a>
  "Q2. Some text"
 </a>
</h4>
<ul>
 <li>answer</li>
 <li>answer</li>
 <li>answer</li>
</ul>

<h4>
 <a>
  "Q2. Some text"
 </a>
</h4>
<div>WITH OTHER INFO THAT i DON'T WANT</div>
<ul>
 <li>answer</li>
 <li>answer</li>
 <li>answer</li>
</ul>

<h4>
 <a>
  "Q2. Some text"
 </a>
</h4>
<div>WITH OTHER INFO THAT i DON'T WANT</div>
<ul>
 <li>answer</li>
</ul>
<ul>
 <li>DONT NEED THIS</li>
</ul>
<ul>
 <li>DONT NEED THIS</li>
</ul>

这段代码大部分都是这样,所以我只需要在 h4 之后选择第一个 ul 标签,并跳过带有 nokigiri 和 ruby.[=12 的 div 标签=]

require 'nokogiri'

doc = Nokogiri.HTML(DATA) 

您想使用 following-siblingfollowing 轴,并指定第一个匹配的 ul:

doc.xpath('//h4/following-sibling::ul[1]')