Die Welt dreht sich immer schneller und diese Beschleunigung zeigt sich in allen Facetten unseres Lebens. Gerade bei Unternehmen kommt es auf die Geschwindigkeit an. In dieser hektischen Beschleunigung ist die Volatilität die einzige Konstante. Um mit dem Tempo Schritt zu halten und dem immer härter werdenden Wettbewerb einen Schritt voraus zu sein, suchen Unternehmen nach Möglichkeiten, die Effizienz zu steigern und die Markteinführungsgeschwindigkeit zu beschleunigen. Dies erklärt die Hektik hinter der Popularität von Programmiersprachen wie Ruby on Rails. Was Ruby on Rails noch erstaunlicher macht, ist die schiere Menge an Edelsteinen, mit denen es ausgestattet ist. Stellen Sie sich ein Werkzeug vor und höchstwahrscheinlich haben Sie es in Ihrem Ruby-Kit. Eines der besten Juwelen für Ruby on Rails ist Nokogiri, eine Bibliothek für den Umgang mit XML- und HTML-Dokumenten. Der häufigste Einsatzzweck eines Parsers wie Nokogiri ist das Extrahieren von Daten aus strukturierten Dokumenten. Beispiele:
- Eine Preisliste von einer Preisvergleichswebsite.
- Suchergebnisse-Links einer Suchmaschine.
- Eine Liste mit Antworten von einer Q&A-Site.
Installation:
OS X:
So installieren Sie libxml2 über Macports:
$ Sudo-Port installiert libxml2 libxslt
Dann installieren Sie Nokogiri:
$ sudo gem install nokogiri
Linux:
Unter Linux müssen wir noch libxml2 installieren. Der Befehl zum Installieren von libxml2 variiert je nach verwendetem Paketmanager und Linux-Distribution.
Auf Fedora:
$ sudo yum install libxml2-devel libxslt-devel
$ Gem Nokogiri installieren
Auf Ubuntu:
$ sudo apt-get install libxml2 libxml2-dev libxslt libxslt-dev
$ Gem Nokogiri installieren
Erste Schritte mit Nokogiri:
Sobald wir Nokogiri installiert haben, können wir damit beginnen, es zu nutzen. Nokogiri kann XPath- oder CSS3-Selektoren verwenden. Durch die Möglichkeit, CSS-Selektoren zu verwenden, eignet es sich wirklich gut zum Extrahieren von Daten aus HTML-Dokumenten.
benötige 'Rubygems'
benötige 'nokogiri'
erfordern 'open-uri'
Zusätzlich zum Nokogiri-Juwel benötigen wir open-uri, damit der Inhalt einer URL leicht gefunden werden kann. Anschließend erstellen wir ein neues Nokogiri-HTML-Dokument und übergeben ihm den Inhalt der Suchergebnisseite. Mit diesem Nokogiri-Dokument können wir dann at_css verwenden und den CSS-Selektor „title“ übergeben, um den Inhalt abzurufen
Grundlegendes Parsen:
Mit Nokogiri können Sie ein HTML- oder XML-Dokument mithilfe verschiedener Strategien analysieren:
- DOM
- SAXOPHON
- Leser
- Ziehen
Jede dieser Strategien hat unterschiedliche Vor- und Nachteile. Die DOM-Schnittstelle ist die gebräuchlichste und wird allgemein als die am einfachsten zu verwendende angesehen.
Jedes Produkt, das das letzte Element in einer Reihe ist, hat eine andere Klasse:
<div class="”product" lastcol”>
<a href="/de/”/product/f05f/”/" class="”product_link”">
<img
src=“/images/dot_clear.gif“
title=“Zerstören Sie den Schlaf mit diesem kraftvollen Energieschuss – in einer wiederverwendbaren Schrotpatronenflasche.“
alt=“Zombie Blast Energy Shots 3er-Pack“
Breite=“125″
Höhe = „125“
class=“faul“
data-original=“http://a.tgcdn.net/images/products/thumb/largesquare/f05f_zombie_blast_energy_shots.jpg“
/>
<h4>Zombie Blast Energy Shots 3er-Pack</h4>
</a>
<p>$9.99</p>
</div>
Das heißt, um den Namen der Produkte zu erfahren, würden wir sagen:
Englisch: Beginnen Sie im Stammverzeichnis des Dokuments: Suchen Sie in jedem Div, das einen Klassennamen hat, der das Wort „Produkt“ enthält. Darin finden Sie einen Link. In diesem Link finden Sie den h4-Text.
XPath: //div[contains(@class,'product')]/a/h4
Der XPath-Gleichheitsoperator gleicht nur vollständige Werte ab, in diesem Fall eine Zeichenfolge. XPath stimmt nur mit ganzen Klassennamen überein, daher würde div[@class='product'] in Xpath nicht wie erwartet funktionieren, um die letzte Spalte abzurufen.
Referenz: