获取最近父标签的内部文本
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.name
和 previous_element
以及其他变体,但没有成功,希望能提供一些见解。谢谢!
您可以使用 XPath preceding-siblng
轴在上下文元素之前查找特定的兄弟元素。例如,给定上下文元素是 <p>
,您可以尝试类似以下的操作来获取最近的前一个兄弟元素 div
,然后 return 相应的 a
元素:
link = warning.at_xpath('./preceding-siblng::div[1]/a')
我正在使用 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.name
和 previous_element
以及其他变体,但没有成功,希望能提供一些见解。谢谢!
您可以使用 XPath preceding-siblng
轴在上下文元素之前查找特定的兄弟元素。例如,给定上下文元素是 <p>
,您可以尝试类似以下的操作来获取最近的前一个兄弟元素 div
,然后 return 相应的 a
元素:
link = warning.at_xpath('./preceding-siblng::div[1]/a')