XPath, чтобы найти привязку с конкретным доменом в этом HTML - PullRequest
0 голосов
/ 19 января 2011

У меня есть следующий 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>

И мне нужно получить URL-адрес Twitter (свойство href "a").

Я использую Rails с самоцветом Nokogiri и использую функцию Nokogiri xPath.

Я использую этот xPath

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

Но не работает :(. Есть предположения?

1 Ответ

3 голосов
/ 19 января 2011

Ваша одиночная косая черта перед сопоставлением a указывает, что элемент a должен быть непосредственным дочерним элементом div - но это не так, это дочерний элемент p.

Вы можете сделать это:

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

Или вы можете просто изменить /a на //a, чтобы означать, что a просто должен быть потомком, а не непосредственным ребенком.

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