Nokogiri 仅首先获取带有链接的列表项

Nokogiri only get list items with links first

我有一个如下所示的文档:

<ul>
  <li>
    <a href="/Synergies">Link</a>Content
  </li>
  </li>
    Content <a href="/Synergies">Link</a>
  </li>
</ul>

我只想获取以 <a> 标签开头的列表项,即第一个 <li> 会命中,但第二个不会。

我尝试在 html 内容上获取所有列表项和正则表达式匹配,但它似乎不起作用:

list.search('li').each do |item|
  if /^<a href="\/Synergies".*$/.match(item) 
    puts link # hit?
  end
end

如有任何建议,我们将不胜感激!

您可以检查项目的第一个子项是否不是文本或空文本:

list.search('li').each do |item|
  if !item.children.first.text? || item.children.first.text.strip.empty?
    puts item # hit?
  end
end

如果您想排除不以 link 开头的项目,您可以 select 第一个子项并在条件中检查其父项:

list.search('li > a:first-child').each do |item|
  if !item.parent.children.first.text? || item.parent.children.first.text.strip.empty?
    puts item # hit?
  end
end