Il mondo gira sempre più velocemente e questa accelerazione è evidente in tutti gli aspetti della nostra vita. Soprattutto quando si tratta di aziende, il premio sta nella velocità. In questa frenetica accelerazione, la volatilità è l’unica costante. Per stare al passo con il ritmo e stare al passo con una concorrenza sempre più agguerrita, le aziende sono alla ricerca di modi per aumentare l’efficienza e avere una maggiore velocità di immissione sul mercato. Questo spiega la frenesia dietro la popolarità di linguaggi di programmazione come Ruby on Rails. Ciò che rende Ruby on Rails ancora più sorprendente è l'enorme numero di gemme di cui è dotato. Immagina uno strumento e molto probabilmente lo hai nel tuo kit Ruby. Uno dei migliori gioielli per Ruby on Rails è Nokogiri che è una libreria per gestire documenti XML e HTML. L'uso più comune di un parser come Nokogiri è estrarre dati da documenti strutturati. Esempi:
- Un elenco di prezzi da un sito Web di confronto dei prezzi.
- Collegamenti ai risultati di ricerca da un motore di ricerca.
- Un elenco di risposte da un sito di domande e risposte.
Installazione:
Sistema operativo X:
Per installare libxml2 da macports:
$ porta sudo installa libxml2 libxslt
Quindi per installare nokogiri:
$ sudo gem installa nokogiri
Linux:
Su Linux dobbiamo ancora installare libxml2. Il comando per installare libxml2 varierà in base al gestore pacchetti e alla distribuzione Linux che stiamo utilizzando.
Su Fedora:
$ sudo yum installa libxml2-devel libxslt-devel
La gemma $ installa nokogiri
Su Ubuntu:
$ sudo apt-get install libxml2 libxml2-dev libxslt libxslt-dev
La gemma $ installa nokogiri
Iniziare con Nokogiri:
Una volta installato Nokogiri possiamo iniziare a utilizzarlo. Nokogiri può utilizzare selettori XPath o CSS3. La capacità di utilizzare selettori CSS lo rende davvero ottimo per estrarre dati da documenti HTML.
richiedono "rubygems"
richiedono 'nokogiri'
richiedono 'open-uri'
Oltre a richiedere la gemma nokogiri avremmo bisogno di open-uri in modo che il contenuto di un URL possa essere facilmente trovato. Creiamo quindi un nuovo documento HTML Nokogiri e gli passiamo il contenuto della pagina dei risultati di ricerca. Con quel documento Nokogiri possiamo poi utilizzare at_css, passando il selettore CSS “title” per recuperare il contenuto del
Analisi di base:
Nokogiri ti consente di analizzare un documento HTML o XML utilizzando alcune strategie diverse:
- DOM
- SAX
- Lettore
- Tiro
Ognuna di queste strategie presenta diversi vantaggi e svantaggi. L'interfaccia DOM è la più comune e generalmente considerata la più semplice da usare.
Ogni prodotto che è l'ultimo articolo della riga ha una classe diversa:
<div class="”product" lastcol”>
<a href="/it/”/product/f05f/”/" class="”product_link”">
<img
src="/images/dot_clear.gif"
title="Distruggi il sonno con questa potente dose di energia, in una bottiglia riutilizzabile per cartucce di fucile."
alt="Confezione da 3 colpi energetici Zombie Blast"
larghezza="125"
altezza = "125"
classe=”pigro”
data-original="http://a.tgcdn.net/images/products/thumb/largesquare/f05f_zombie_blast_energy_shots.jpg"
/>
<h4>Confezione da 3 colpi energetici Zombie Blast</h4>
</a>
<p>$9.99</p>
</div>
Ciò significa che per ottenere il nome dei prodotti, diremmo:
Inglese: Partendo dalla radice del documento: cerca in ogni div che ha un nome di classe contenente la parola "prodotto". All'interno troverai un collegamento. In quel collegamento trovi il testo h4.
XPath: //div[contiene(@class,'prodotto')]/a/h4
L'operatore di uguaglianza XPath corrisponde solo a valori completi, in questo caso una stringa. XPath corrisponde solo a nomi di intere classi, quindi div[@class='product'] in XPath non funzionerebbe per ottenere l'ultima colonna come ci si potrebbe aspettare.
Riferimento: