Le monde tourne de plus en plus vite et cette accélération est évidente dans toutes les facettes de nos vies. Surtout lorsqu’il s’agit d’entreprises, la priorité est à la vitesse. Dans cette frénésie accélérée, la volatilité est la seule constante. Pour suivre le rythme et garder une longueur d’avance face à une concurrence de plus en plus féroce, les entreprises recherchent des moyens d’accroître leur efficacité et d’accélérer leur mise sur le marché. Cela explique la frénésie derrière la popularité des langages de programmation comme Ruby on Rails. Ce qui rend Ruby on Rails encore plus étonnant, c'est le grand nombre de joyaux qui le contiennent. Imaginez un outil et vous l'avez probablement dans votre kit Ruby. L'un des meilleurs joyaux de Ruby on Rails est Nokogiri, une bibliothèque permettant de gérer les documents XML et HTML. L'utilisation la plus courante d'un analyseur comme Nokogiri est d'extraire des données de documents structurés. Exemples:
- Une liste de prix provenant d'un site Web de comparaison de prix.
- Liens de résultats de recherche à partir d’un moteur de recherche.
- Une liste de réponses provenant d'un site de questions-réponses.
Installation:
OS X :
Pour installer libxml2 depuis macports :
$ port sudo installer libxml2 libxslt
Puis pour installer nokogiri :
$ sudo gem installer nokogiri
Linux :
Sous Linux, nous devons toujours installer libxml2. La commande d'installation de libxml2 varie en fonction du gestionnaire de packages et de la distribution Linux que nous utilisons.
Sur Fedora :
$ sudo yum install libxml2-devel libxslt-devel
Gemme $ installer Nokogiri
Sur Ubuntu :
$ sudo apt-get install libxml2 libxml2-dev libxslt libxslt-dev
Gemme $ installer Nokogiri
Premiers pas avec Nokogiri :
Une fois Nokogiri installé, nous pouvons commencer à l'utiliser. Nokogiri peut utiliser des sélecteurs XPath ou CSS3. La possibilité d'utiliser des sélecteurs CSS en fait un très bon choix pour extraire des données à partir de documents HTML.
nécessite des « rubygems »
nécessite 'nokogiri'
nécessite 'open-uri'
En plus d'exiger la gemme nokogiri, nous aurions besoin d'open-uri pour que le contenu d'une URL puisse être facilement trouvé. Nous créons ensuite un nouveau document HTML Nokogiri et lui transmettons le contenu de la page de résultats de recherche. Avec ce document Nokogiri, nous pouvons ensuite utiliser at_css, en passant le sélecteur CSS « title » pour récupérer le contenu du
Analyse de base :
Nokogiri vous permet d'analyser un document HTML ou XML en utilisant différentes stratégies :
- DOMAINE
- SAXO
- Lecteur
- Tirer
Chacune de ces stratégies présente des avantages et des inconvénients différents. L'interface DOM est la plus courante et généralement considérée comme la plus simple à utiliser.
Chaque produit qui est le dernier élément d’une rangée a une classe différente :
<div class="”product" lastcol”>
<a href="/fr/”/product/f05f/”/" class="”product_link”">
<img
src="/images/dot_clear.gif"
title=”Détruisez le sommeil avec cette puissante dose d’énergie – dans une bouteille de cartouche de fusil de chasse réutilisable.”
alt = "Pack de 3 tirs énergétiques Zombie Blast"
largeur=”125″
hauteur=”125″
classe = "paresseux"
data-original = "http://a.tgcdn.net/images/products/thumb/largesquare/f05f_zombie_blast_energy_shots.jpg"
/>
<h4>Pack de 3 tirs d'énergie Zombie Blast</h4>
</a>
<p>$9.99</p>
</div>
Cela signifie que pour obtenir le nom des produits, nous dirions :
Anglais: En commençant à la racine du document : recherchez dans chaque div qui a un nom de classe contenant le mot « produit ». À l’intérieur, trouvez un lien. Dans ce lien, trouvez le texte h4.
XPath : //div[contient (@class,'product')]/a/h4
L'opérateur d'égalité XPath correspond uniquement aux valeurs complètes, dans ce cas une chaîne. XPath ne correspond qu'aux noms de classes entières, donc div[@class='product'] dans XPath ne fonctionnerait pas pour obtenir la dernière colonne comme on pourrait s'y attendre.
Référence: