42 votes

extraire des liens (URL), avec nokogiri en rubis, à partir d'une balise href html?

Je veux extraire d'une page Web toutes les URL, comment puis-je faire cela avec nokogiri?

exemple:

<div class = "heat">
   <a href='http://example.org/site/1/'> site 1 </a>
   <a href='http://example.org/site/2/'> site 2 </a>
   <a href='http://example.org/site/3/'> site 3 </a>
</diV>

le résultat doit être une liste:

 l = [' 

88voto

sris Points 3040

Vous pouvez le faire comme ceci:

 doc = Nokogiri::HTML.parse(<<-HTML_END)
<div class="heat">
   <a href='http://example.org/site/1/'>site 1</a>
   <a href='http://example.org/site/2/'>site 2</a>
   <a href='http://example.org/site/3/'>site 3</a>
</div>
<div class="wave">
   <a href='http://example.org/site/4/'>site 4</a>
   <a href='http://example.org/site/5/'>site 5</a>
   <a href='http://example.org/site/6/'>site 6</a>
</div>
HTML_END

l = doc.css('div.heat a').map { |link| link['href'] }
 

Cette solution trouve tous les éléments d'ancrage à l'aide d'un sélecteur css et collecte leurs attributs href.

9voto

gustavgans Points 885

ok ce code fonctionne parfaitement pour moi, merci à sris

 p doc.xpath ('// div [@ class = "heat"] / a'). map {| link | lien ['href']} 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X