Ruby on Rails: HTML auslesen (parsen)

Mittels Ruby on Rails HTML Content parsen und bestimmte Werte/Informationen aus einem HTML Dokument oder einer Webseite auslesen. Bei dem Parsen einer Webseite ist selbstverständlich die Voraussetzung, dass es erlaubt ist bzw. das es für das auslesen nicht vielleicht schon eine API gibt.

Zum auslesen der Informationen innerhalb des HTML Dokuments wird die Ruby on Rails Erweiterung Nokogiri genutzt. Nokogiri kann HTML, XML, SAX, und Reader parsen. Dabei wird für die Suche XPath oder ein CSS3 Selector genutzt.

Installation

Entweder direkt per Gem Installation:

oder durch einen Eintrag in die Datei Gemfile des jeweiligen Rails Projektes

Welches anschließend für das Projekt installieren ist:

Beschreibung

Als erstes wird für das Beispiel ein Controller und ein Index View erzeugt.

Wenn der lokale WEBrick HTTP Server läuft sollte die Index Seite über die folgende URL aufrufbar sein.

HTML Dokument öffnen und einlesen

Bearbeite app/controller/htmlparsen_controller.rb wie folgt:

Hier wird definiert das open-uri unbedingt verwendet werden muss. Anschließend wird im Bereich von „index“ die Url als String in der Variablen „url“ abgelegt, diese Url wird mit der Methode open() in die Variable „doc“ eingelesen. Abschließend wird der mittels der Methode Nokogiri::HTML der klare HTML Inhalt in die Instanzvariablen @html_content geschrieben.

Der Inhalt der Instanzvariablen @html_content lassen wir uns im View ausgeben.

app/views/htmlparsen/index.html.erb

Und schon wurde ein HTML Dokument eingeöffnet, eingelesen und ausgelesen.

HTML Dokument parsen (XPath)

Um das eingelesene HTML Dokument nach Werten oder Informationen zu parsen, wird der Code des Controller wie folgt angepasst:

app/controller/htmlparsen_controller.rb

Hier wird mittels der Methode „xpath()“ der Wert aus HTML Tags oder Attributen gelesen. Dabei fällt auf das nicht unbedingt der vollqualifizierte Pfad (wie bei @title) verwendet werden muss. Es geht auch das wie bei @description und @keywords mitten im Pfad angefangen wird oder nur der Tag dort steht.

Für die Frontend Ausgabe wird die View wie folgt angepasst:

app/views/htmlparsen/inde.html.erb

Weitere Informationen – Links

Homepage
Nokogiri – http://nokogiri.org/

XPath Dokumentation
http://www.w3schools.com/xpath/xpath_syntax.asp
http://www.w3.org/TR/xpath/

Alternative Ruby on Rails HTML Parser
Hpricot – https://github.com/hpricot/hpricot
REXML – http://www.germane-software.com/software/rexml/
LibXML – http://libxml.rubyforge.org/rdoc/
Mechanize – https://github.com/tenderlove/mechanize

(Visited 167 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.