Världen snurrar snabbare och snabbare och denna acceleration är tydlig i alla aspekter av våra liv. Speciellt när det kommer till företag ligger premien på hastigheten. I denna frenetiska accelererade är volatiliteten den enda konstanten. För att hänga med i takten och för att ligga steget före den allt hårdare konkurrensen letar företag efter sätt att öka effektiviteten och få snabbare marknadshastighet. Detta förklarar frenesien bakom populariteten för programmeringsspråk som Ruby on Rails. Det som gör Ruby on Rails ännu mer fantastiskt är det stora antalet ädelstenar som den kommer packad med. Föreställ dig ett verktyg och du har förmodligen det i ditt Ruby-kit. En av de bästa pärlorna för Ruby on Rails är Nokogiri som är ett bibliotek för att hantera XML- och HTML-dokument. Den vanligaste användningen av en parser som Nokogiri är att extrahera data från strukturerade dokument. Exempel:
- En lista över priser från en prisjämförelsewebbplats.
- Sökresultatlänkar från en sökmotor.
- En lista med svar från en Q&A-webbplats.
Installation:
OS X:
Så här installerar du libxml2 från macports:
$ sudo port installera libxml2 libxslt
Sedan för att installera nokogiri:
$ sudo gem installera nokogiri
Linux:
På Linux behöver vi fortfarande installera libxml2. Kommandot för att installera libxml2 kommer att variera beroende på pakethanteraren och Linux-distributionen vi använder.
På Fedora:
$ sudo yum installera libxml2-devel libxslt-devel
$ gem installera nokogiri
På Ubuntu:
$ sudo apt-get installera libxml2 libxml2-dev libxslt libxslt-dev
$ gem installera nokogiri
Komma igång med Nokogiri:
När vi väl har installerat Nokogiri kan vi börja använda det. Nokogiri kan använda XPath- eller CSS3-väljare. Möjligheten att använda CSS-väljare gör det till en riktigt bra passform för att extrahera data från HTML-dokument.
kräver "rubygems"
kräver 'nokogiri'
kräver 'open-uri'
Förutom att kräva nokogiri gem vi skulle behöva open-uri så att innehållet i en URL lätt kan hittas. Vi skapar sedan ett nytt Nokogiri HTML-dokument och skickar det innehållet på sökresultatsidan. Med det Nokogiri-dokumentet kan vi sedan använda at_css och skicka CSS-väljaren "titel" för att hämta innehållet i
Grundläggande analys:
Nokogiri låter dig analysera ett HTML- eller XML-dokument med några olika strategier:
- DOM
- SAX
- Läsare
- Dra
Var och en av dessa strategier har olika fördelar och nackdelar. DOM-gränssnittet är det vanligaste och anses allmänt vara det enklaste att använda.
Varje produkt som är den sista artikeln i raden har en annan klass:
<div class="”product" lastcol”>
<a href="/sv/”/product/f05f/”/" class="”product_link”">
<img
src="/images/dot_clear.gif"
title=”Förstör sömnen med detta kraftfulla energiskott – i en återanvändbar hagelgevärsflaska.”
alt="Zombie Blast Energy Shots 3-pack"
width="125"
höjd=”125″
class=”lat”
data-original=”http://a.tgcdn.net/images/products/thumb/largesquare/f05f_zombie_blast_energy_shots.jpg”
/>
<h4>Zombie Blast Energy Shots 3-pack</h4>
</a>
<p>$9.99</p>
</div>
Detta betyder att för att få namnet på produkterna skulle vi säga:
Engelsk: Börja i roten av dokumentet: titta i varje div som har ett klassnamn som innehåller ordet 'produkt'. Där hittar du en länk. I den länken hittar du h4-text.
XPath: //div[innehåller(@klass,'produkt')]/a/h4
XPath-likhetsoperatorn matchar bara fullständiga värden, i det här fallet en sträng. XPath matchar bara hela klassnamn så div[@class='product'] i Xpath skulle inte fungera för att få den sista kolumnen som du kan förvänta dig.
Referens: