使用 Nokogiri 获取 HTML 中的 div 列表以及先前的标头

发布于 2024-12-11 21:36:30 字数 760 浏览 0 评论 0原文

我正在尝试提取其 class =“child”的 DIV 列表,并将“child”与出现在其之前的 class =“header”的 DIV 相关联。

例如:

<div class=header>HEADER A</div>
<div class=child>CHILD A.1</div>
<div class=child>CHILD A.2</div>
<div class=child>CHILD A.3</div>
<div class=header>HEADER B</div>
<div class=child>CHILD B.1</div>
<div class=child>CHILD B.2</div>
<div class=child>CHILD B.3</div>

我希望有如下所示的内容

HEADER A --> CHILD A.1
HEADER A --> CHILD A.2
HEADER A --> CHILD A.3
HEADER B --> CHILD B.1
HEADER B --> CHILD B.2
HEADER B --> CHILD B.3

I am trying to extract list of DIVs whose class = "child", and associate the "child" with a DIV whose class = "header" that occur before it.

For example:

<div class=header>HEADER A</div>
<div class=child>CHILD A.1</div>
<div class=child>CHILD A.2</div>
<div class=child>CHILD A.3</div>
<div class=header>HEADER B</div>
<div class=child>CHILD B.1</div>
<div class=child>CHILD B.2</div>
<div class=child>CHILD B.3</div>

I expect to have something like below

HEADER A --> CHILD A.1
HEADER A --> CHILD A.2
HEADER A --> CHILD A.3
HEADER B --> CHILD B.1
HEADER B --> CHILD B.2
HEADER B --> CHILD B.3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萝莉病 2024-12-18 21:36:30

更“xpathy”的版本:

doc.xpath('//div[@class="child"]').each do |node|
    header = node.at('./preceding-sibling::div[@class="header"][1]')
    puts header.text + " --> " + node.text
end

A more 'xpathy' version:

doc.xpath('//div[@class="child"]').each do |node|
    header = node.at('./preceding-sibling::div[@class="header"][1]')
    puts header.text + " --> " + node.text
end
魄砕の薆 2024-12-18 21:36:30

只需存储前一个标头元素:

header = ""
xml.xpath("//div").each{ |node|
  if node['class'] =~ /header/
    header = node.text
  else
    puts header + " --> " + node.text
  end
}

Just store the previous header element:

header = ""
xml.xpath("//div").each{ |node|
  if node['class'] =~ /header/
    header = node.text
  else
    puts header + " --> " + node.text
  end
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文