Parser (x)HTML

Parser (x)HTML - Ruby/Rails - Programmation

Marsh Posté le 16-03-2007 à 19:53:58    

Salut,
 
Je vais pas tarder à avoir besoin d'un parser html pour tenter d'ajouter des fonctions qui manquent cruellement à un embryon d'outils fait en php :/
Du coup, j'ai commencé à reluquer les parser html pour ruby, mais j'ai l'impression qu'il en existe un certain nombre; parmi lesquels:
> ymHTML (dernier paragraphe)
> Hpricot
> RAA
> ou encore Ruby HTML-to-XML pour après parser le XML résultant? (ça m'a l'air tout de même plus fastidieux comme méthode :D)
 
Est-ce que quelqu'un aura déjà utilisé tel ou tel parser? Les pages sont plutôt simples, donc je pense que je n'ai pas besoin d'un parser de folie... Super permissif peut-être. Je ne sais pas à quel point la page est valide par contre... (Faudra que je vérifie lundi ce point).

Reply

Marsh Posté le 16-03-2007 à 19:53:58   

Reply

Marsh Posté le 16-03-2007 à 23:30:46    

Pour faire du screen-scraping, Hpricot est très très bien :jap:

 

Sinon, il y a également RubyfulSoup, je ne l'ai jamais utilisé mais c'est un port de la lib de screen scraping BeautifulSoup pour Python, dont je suis grand fan :D

 

Je pense néamoins que je conseillerais Hpricot, cette lib a vraiment un "feeling" Ruby à l'utilisation :D


Message édité par masklinn le 16-03-2007 à 23:31:10

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-03-2007 à 23:45:43    

+1 sur Hpricot, tres bon [:dawa]

Reply

Marsh Posté le 16-03-2007 à 23:58:38    

Merci pour ce pré-tri :)
Après survol des 2, et vu que je n'ai pas d'habitude sur BeautifulSoup, je vais jouer un peu avec Hpricot en premier. Et à voir l'utilisation, je sens que je vais apprendre des constructions sur Ruby au passage :D
 
Merci à vous 2 :jap:

Reply

Marsh Posté le 17-03-2007 à 20:07:45    

Bon, j'ai attaqué Hpricot, et cette lib me plaît vraiment pour l'instant (bon, au passage j'ai découvert les XPath, donc y'a ptet pas *que* Hpricot  [:god] )

 

J'ai une petite question perf du coup: pour m'exercer avec cette lib, j'ai voulu faire un semblant de parser de blog qui fait un rss-like. Le blog que je parse (http://labs.trolltech.com/blogs/ si vous voulez le voir directement) a cette archi:

<plein de balises mères>
    <div id="post-346" class="post">
        <div class="blogHeader">
            <div class="blogTitle">
                le titre avec le lien..
            </div>
            <d'autres div...></d'autres div...>
        </div>
        <div class="blogEntry">
            <blablabla le texte du blog séparé par paragraphe (ou pas)...>
        </div>
    </post x>
</plein de balises mères>

 

Pour l'instant, je fais la récupération des titres par le xpath qui va direct sur le div blogTitle, et ensuite pour chaque titre, je génére le xpath vers le blogEntry correspondant. Et donc je me demande s'il n'est pas moins coûteux d'avoir un xpath par "post", puis de descendre dans l'arbre en se basant dessus.
Des suggestions?

 

Edit: lien sur url pas automatique


Message édité par IrmatDen le 17-03-2007 à 20:12:54
Reply

Marsh Posté le 17-03-2007 à 20:13:55    

Tu t'en soucieras si tu as l'impression que ton appli est trop lente, fais donc ce qui te semble donner le code le plus clair :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-03-2007 à 20:15:02    

Bof, c'était du code jetable histoire de voir comment utiliser ce parser, pas plus.

Reply

Marsh Posté le 17-03-2007 à 20:17:50    

Donc tu t'en fous, je répète mon conseil: fais ce qui te semble donner le code le plus clair, compréhensible et facilement maintenable, c'est le plus important :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 17-03-2007 à 20:27:38    

Oui, oui, je vais y jeter un oeil, sinon, je saurais pas le plus clair des 2, sinon :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed