gpt4 book ai didi

ruby - 使用 Nokogiri 在另一个元素之前查找元素

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:43 24 4
gpt4 key购买 nike

我有一个部分 HTML 文档:

<h2>Destinations</h2>
<div>It is nice <b>anywhere</b> but here.
<ul>
<li>Florida</li>
<li>New York</li>
</ul>
<h2>Shopping List</h2>
<ul>
<li>Booze</li>
<li>Bacon</li>
</ul>

在每个 <li>项目,我想知道项目所属的类别,例如 <h2> 中的文本标签。

这段代码不起作用,但这是我想要做的:

@page.search('li').each do |li|
li.previous('h2').text
end

最佳答案

Nokogiri 允许您使用 xpath定位元素的表达式:

categories = []

doc.xpath("//li").each do |elem|
categories << elem.parent.xpath("preceding-sibling::h2").last.text
end

categories.uniq!
p categories

第一部分查找所有“li”元素,然后在内部查找父元素 (ul, ol),即前面的元素 (preceding-sibling),它是一个 h2。可以有多个,所以我们取最后一个(即离当前位置最近的那个)。

我们需要调用“uniq!”因为我们得到每个“li”的 h2(因为“li”是起点)。

使用您自己的 HTML 示例,此代码输出:

["Destinations", "Shopping List"]

关于ruby - 使用 Nokogiri 在另一个元素之前查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com