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
我有一个如下所示的文档:
<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