In questo capitolo illustreremo brevemente delle librerie per la gestione e la generazione di codice HTML e di sessioni WWW. In questa lezione facciamo la conoscenza di Hpricot, nelle prossime incontreremo BlueCloth, Markaby e Mechanize.
Hpricot è un parser HTML semplice e veloce. Permette inoltre di fare ricerche basandosi sugli ID degli elementi, sui selettori CSS, sui tag e in generale tutto quello che identifica una parte di una pagina HTML.
È possibile importare i dati da analizzare sia da file
doc = open("index.html") { |f| Hpricot(f) }
sia da internet utilizzando ad esempio "open-uri"
require 'open-uri' doc = open("http://qwantz.com/") { |f| Hpricot(f) }
o ancora passandoli direttamente sotto forma di stringa
doc = Hpricot("<html><body><p>Una semplice pagina HTML.</p></body></html>")
Una volta importato il codice HTML possiamo estrarre tutti i tipi di informazioni usando adeguatamente i metodi "search" e "parse"; informazioni che possiamo manipolare a piacimento. Vediamo un esempio che ci permette di estrarre il testo in grassetto da del codice HTML
require 'rubygems' require 'hpricot' html=<<FIN <html><body> <p>Paragrafo di prova.</p> <b>Testo in grassetto</b> e <i>testo in corsivo</i>. </body></html> FIN doc = Hpricot(html) doc.search(:b).each do |bold| puts bold.inner_html end
Dopo aver importato le giuste librerie e passato a Hpricot il testo HTML da analizzare, per comodità l'abbiamo passato sotto forma di stringa ma la sostanza non cambia, ricerchiamo tutte le occorrenze del tag <b>
e ne stampiamo a video il contenuto usando inner_html
che restituisce il contenuto dell'elemento selezionato.