我有一个如下文件:
<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
任何建议将不胜感激!
答案 0 :(得分:1)
您可以检查项目的第一个孩子不是文本还是空文本:
list.search('li').each do |item|
if !item.children.first.text? || item.children.first.text.strip.empty?
puts item # hit?
end
end
如果要排除不以链接开头的项目,则可以选择第一个孩子并在以下情况下检查其父母:
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