You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nokogiri中从h3节点获取后续的p节点?

解决方案

针对从<h3>节点定位到后续的<p>节点,这里提供几种实用的方法,适配Nokogiri解析场景:

方法1:CSS兄弟选择器

利用CSS的后续兄弟选择器~,直接选中<h3>之后的所有<p>兄弟节点,取第一个即可:

h3_node = doc.at_css('h3')
p_node = h3_node.css('~ p').first

方法2:XPath精准定位

如果需要更灵活的节点筛选,用XPath可以直接指定目标:

  • 找<h3>同一父节点下的第一个后续<p>兄弟:
p_node = h3_node.at_xpath('./following-sibling::p[1]')
  • 找<h3>之后所有节点中的第一个<p>(不限父节点层级):
p_node = h3_node.at_xpath('./following::p[1]')

方法3:手动遍历兄弟节点

如果需要自定义筛选逻辑(比如跳过特定标签或空白文本节点),可以循环遍历后续兄弟节点:

h3_node = doc.at_css('h3')
target_p = nil
current = h3_node.next_sibling

while current
  # 跳过无意义的空白文本节点
  current = current.next_sibling if current.text? && current.text.strip.empty?
  
  if current.name == 'p'
    target_p = current
    break
  end
  current = current.next_sibling
end

以上方法都能解决你遇到的问题,根据实际HTML结构复杂度选择即可。

内容的提问来源于stack exchange,提问作者Bad Hombre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:54:28