获取最近父标签的内部文本

Get inner text of nearest parent a tag

我正在使用 Ruby & Nokogiri 来解析页面上的 html。

<div><a href="#" title="firstTitle">text one</a></div>

  <p class="OK">some content</p>
  <p class="OK">some content</p>

<div><a href="#" title="secondTitle">text two</a></div>

  <p class="WARNING">some content</p>
  <p class="WARNING">some content</p>

<div><a href="#" title="thirdTitle">text three</a></div>

  <p class="CRITICAL">some content</p>
  <p class="CRITICAL">some content</p>

假设我想查找 class 为 WARNING 的段落,我可以通过以下方法成功完成:

doc = Nokogiri::HTML(html)
warning = doc.css('p.WARNING')

但现在我想定位最近的父 a 标签的内部文本,在这种情况下它会 return text two.

我试过使用 .first.parent.nameprevious_element 以及其他变体,但没有成功,希望能提供一些见解。谢谢!

您可以使用 XPath preceding-siblng 轴在上下文元素之前查找特定的兄弟元素。例如,给定上下文元素是 <p>,您可以尝试类似以下的操作来获取最近的前一个兄弟元素 div,然后 return 相应的 a 元素:

link = warning.at_xpath('./preceding-siblng::div[1]/a')