XPath在此HTML中查找具有特定域的锚点

时间:2011-01-19 14:43:24

标签: ruby-on-rails xpath nokogiri

我有以下HTML

<div id="profile-bio-full">
  <p>Bla bla bla bla </p>
  <p>Site: <a href="http://www.something.com" rel="nofollow">something.com</a></p>
  <p>Facebook: <a href="http://www.facebook.com" rel="nofollow">facebook.com</a></p>
  <p>Twitter: <a href="http://www.twitter.com" rel="nofollow">www.twitter.com</a></p>
</div>

我需要获取Twitter URL(href“a”属性)。

我正在使用Rails和Nokogiri gem,以及使用Nokogiri xPath功能。

我正在使用此xPath

//div[contains(@id, "profile-bio-full")]/a[contains(@href, "twitter.com")]

但不要工作:(。任何猜测?

1 个答案:

答案 0 :(得分:3)

您的a匹配器之前的单个正斜杠指定a元素必须是div的直接子项 - 但不是,它是{{1}的孩子}。

你可以这样做:

p

或者您可以将//div[contains(@id, "profile-bio-full")]/p/a[contains(@href, "twitter.com")] 更改为/a,以表示//a只需要是后代而不是直接的孩子。

a