Der ultimative Leitfaden für Ruby-Bibliotheken zum Parsen von HTML und XML

Suciu Dan am 02. Februar 2023

blog-image

Beim Web Scraping, also der Extraktion von Daten aus dem Internet, werden Inhalte aus HTML- und XML-Dokumenten gelesen und verarbeitet. Um diese Aufgabe zu erleichtern, verwenden Entwickler spezialisierte Bibliotheken, sogenannte Parser.

Die Ruby-Gemeinschaft bietet eine Vielzahl von Optionen für Ruby-HTML-Parser, und die Wahl des richtigen Parsers für Ihr Projekt kann eine schwierige Aufgabe sein. Damit Sie eine fundierte Entscheidung treffen können, finden Sie hier einige Schlüsselfaktoren, die Sie bei der Auswahl eines Parsers berücksichtigen sollten:

  • Sie sind quelloffen und können frei verwendet werden.
  • Der Grad der Unterstützung für verschiedene HTML- und XML-Standards.
  • Umfassende Dokumentation und Tutorials, die den Entwicklern den Einstieg erleichtern.
  • Die Fähigkeit, mit verschiedenen Arten von Kodierungen umzugehen, insbesondere bei nicht-lateinischen Sprachen.
  • Eine leichtgewichtige und benutzerfreundliche API, die das Navigieren und Suchen in HTML- und XML-Dokumenten erleichtert.
  • Das Niveau der Fehlerbehandlung und Validierung, das die Bibliothek bietet.
  • Eine starke und aktive Gemeinschaft, die Unterstützung und Ressourcen bietet.
  • Die Größe und der Speicherbedarf der Bibliothek.
  • Gute Leistung, insbesondere bei der Arbeit mit großen Dateien.
  • Der Grad der Unterstützung für XML-Namespaces, wenn es sich um Dokumente handelt, die diese verwenden.
  • Es wird aktiv gewartet, um die Kompatibilität mit den neuesten Versionen von Ruby zu gewährleisten und Fehlerkorrekturen zu erhalten.
  • Der Grad der Erweiterbarkeit oder der Anpassungsmöglichkeiten, die die Bibliothek bietet.

In diesem Artikel werden sechs populäre Ruby-Bibliotheken zum Parsen von HTML und XML näher betrachtet und anhand der oben genannten Kriterien bewertet, damit Sie das perfekte Tool für Ihre Web-Scraping-Anforderungen finden können.

Nokogiri

Nokogiri ist eine beliebte und leistungsfähige Bibliothek zum Parsen und Durchsuchen von XML- und HTML-Dokumenten in Ruby. Sie hat eine saubere und einfache API und baut auf libxml2 auf, einer etablierten C-Bibliothek zum Parsen von XML.

Edelstein-Kommando

gem install nokogiri

Code-Muster

require "nokogiri"

html = "<!DOCTYPE html><html><head><title>Hello, World!</title></head><body>Hello, World!</body></html>"

parsed_data = Nokogiri::HTML.parse(html)

puts parsed_data.title

Pro und Kontra

Hier sind einige der Vor- und Nachteile der Verwendung von Nokogiri:

Profis

  • Er gilt als der beliebteste und am häufigsten verwendete Parser für Ruby
  • Dank der Verwendung von libxml2 als Parsing-Engine ist es sehr schnell und effizient. Es kann große Dokumente mit Leichtigkeit verarbeiten.
  • Es verfügt über eine einfache und benutzerfreundliche API, die das Navigieren und Suchen in XML- und HTML-Dokumenten erleichtert.
  • Sie unterstützt sowohl XML- als auch HTML-Dokumente, so dass Sie dieselbe Bibliothek zum Parsen verschiedener Dokumenttypen verwenden können.
  • Es verfügt über eine Vielzahl von Methoden für die Suche und Bearbeitung von Elementen in einem Dokument, die es einfach machen, die benötigten Informationen zu extrahieren. Sie können Daten mithilfe von CSS-Selektoren oder XPath extrahieren.
  • Es kann missgebildete HTML-Dokumente analysieren
  • Es ist mit verschiedenen Ruby-Versionen kompatibel und wird aktiv gepflegt.
  • Außerdem unterstützt es sowohl SAX (Simple API for XML) als auch DOM (Document Object Model) Parser.

Nachteile

  • Einige der Parsing-Aufgaben erfordern ein tiefes Verständnis der DOM-Struktur, was schwierig zu erlernen sein kann, wenn der Entwickler damit nicht vertraut ist.
  • Sie kann im Vergleich zu anderen Bibliotheken wie Ox mehr Speicherplatz benötigen.
  • Es kann Schwierigkeiten haben, Dokumente zu analysieren, die durch eine Authentifizierung geschützt sind, z. B. eine Website, die einen Benutzernamen und ein Passwort für den Zugriff erfordert.
  • Es ist nicht thread-sicher, so dass Sie besondere Vorsicht walten lassen müssen, wenn Sie es in einer Multithreading-Umgebung verwenden möchten.
  • Es ist nicht gut geeignet für die Übergabe von Dokumenten mit dynamisch geladenem Inhalt über JavaScript, wie z.B. bei AJAX.

Ox

Ox, oder Optimized XML, ist eine leistungsfähige und effiziente Bibliothek zum Parsen und Bearbeiten von XML- und JSON-Dokumenten in Ruby.

Die Bibliothek ist in C implementiert, um die Leistung und Speichereffizienz zu verbessern. Ox verwendet zum Parsen des Dokuments einen Pull-Parser-Ansatz, der es ermöglicht, große Dateien mit weniger Speicherbedarf zu parsen als ein DOM-basierter Parser.

Ox verarbeitet XML-Dokumente unter anderem auf folgende Weise:

  • Als allgemeiner XML-Parser und -Schreiber: Ox kann XML-Dokumente lesen und schreiben und bietet Methoden zum Suchen und Bearbeiten von Elementen im Dokument.
  • Als schneller Object/XML Marshaller: Ox kann XML-Dokumente in Ruby-Objekte umwandeln und umgekehrt. Diese Funktion ermöglicht eine einfache Serialisierung und Deserialisierung von Daten.
  • Als SAX-Stream-Parser: Ox kann XML in einem Streaming-Verfahren parsen, das sich für große Dateien eignet und eine schnelle Verarbeitung von XML-Ereignissen ermöglicht.

Edelstein-Kommando

gem install ox

Code-Muster

require "ox"

doc = Ox.parse(%{

<?xml version="1.0"?>

<Payment>

<Shop>ikea</Shop>

<Amount>199.99</Amount>

<Date>2023-01-12</Date>

</Payment>

})

puts doc.Payment.Shop.text

Pro und Kontra

Hier sind einige Vor- und Nachteile der Verwendung von Ox:

Profis

  • Ox ist sehr schnell und speichereffizient, da es einen Pull-Parser-Ansatz verwendet und in C implementiert ist. Dadurch eignet es sich gut für das Parsen großer XML- und JSON-Dokumente oder die Arbeit mit Streaming-Daten
  • Ox hat eine saubere und einfache API, die es einfach zu benutzen und zu verstehen macht
  • Ox unterstützt sowohl JSON als auch XML, so dass Sie dieselbe Bibliothek zum Parsen verschiedener Dokumenttypen verwenden können
  • Es verfügt über eine integrierte Unterstützung für XML-Namespaces, die den Umgang mit XML-Dokumenten mit Namespaces erleichtert.
  • Sie wird aktiv gepflegt und aktualisiert

Nachteile

  • Die API für die Suche und Bearbeitung von Elementen ist im Vergleich zu anderen Bibliotheken wie Nokogiri oder REXML möglicherweise weniger umfangreich
  • Ihre Gemeinschaft und Unterstützung ist vielleicht nicht so stark wie die von etablierteren Bibliotheken wie Nokogiri

Oga

Oga ist eine moderne und leichtgewichtige Bibliothek zum Parsen und Suchen von XML- und HTML-Dokumenten in Ruby. Im Vergleich zu anderen Bibliotheken verfolgt sie einen moderneren Ansatz, indem sie eine reine Ruby-Implementierung verwendet, was bedeutet, dass sie keine Abhängigkeiten von C-Bibliotheken hat.

Die Bibliothek ist für kleine bis mittelgroße Dokumente geeignet und erfordert keine erweiterten Funktionen wie XSLT oder XML-Schema-Validierung.

Obwohl die Bibliothek keine Systembibliotheken wie libxml benötigt, verwendet Oga eine kleine, native Erweiterung (C für MRI/Rubinius, Java für JRuby), um eine bessere Leistung zu erzielen.

Edelstein-Kommando

gem install oga

Code-Muster

require "oga"

doc = Oga.parse_xml(%{

<?xml version="1.0"?>

<Payment>

<Shop>ikea</Shop>

<Amount>199.99</Amount>

<Date>2023-01-12</Date>

</Payment>

})

puts doc.at_xpath("Payment/Shop/text()")

Pro und Kontra

Hier sind einige Vor- und Nachteile der Verwendung von Oga:

Profis

  • Oga verfügt über eine einfache und saubere API, die das Navigieren und Suchen in XML- und HTML-Dokumenten erleichtert.
  • Die reine Ruby-Implementierung erleichtert die Installation und Ausführung auf verschiedenen Plattformen und Umgebungen.
  • Die API von Oga ermöglicht das Parsing und die Abfrage von Dokumenten in einer Multithreading-Umgebung, ohne dass Leistungsprobleme auftreten.
  • Oga ist leichtgewichtig und lässt sich einfach mit anderen Bibliotheken und Modulen integrieren.
  • Oga hat einen geringen Speicherbedarf.

Nachteile

  • Oga bietet keine Unterstützung für komplexe Funktionen wie XPath, XSLT oder die Validierung von XML-Dokumenten anhand einer DTD oder eines XML-Schemas.
  • Die Funktionen von Oga sind im Vergleich zu anderen Bibliotheken wie Nokogiri, die für komplexe XML- oder HTML-Parsing-Aufgaben möglicherweise nicht geeignet sind, begrenzt.
  • Obwohl es gepflegt wird, erhält es im Vergleich zu Nokogiri weniger Aktualisierungen

LibXML-Rubin

LibXML Ruby ist eine Bindung an die libxml2 C-Bibliothek, die eine etablierte Bibliothek für das Parsen und die Bearbeitung von XML-Dokumenten ist. Die Bindung bietet eine Schnittstelle zu den Funktionen von libxml2 und wird von mehreren anderen beliebten Bibliotheken, einschließlich Nokogiri, verwendet.

Die Bibliothek verfügt über erweiterte Funktionen wie XPath-Unterstützung, DTD-Parsing, XSL-Transformationen und vieles mehr.

Edelstein-Kommando

gem install libxml-ruby

Code-Muster

require "xml"

doc = XML::Parser.string(%{

<?xml version="1.0"?>

<Payment>

<Shop>ikea</Shop>

<Amount>199.99</Amount>

<Date>2023-01-12</Date>

</Payment>

})

puts doc.parse.find('//Shop').first.content

Pro und Kontra

Hier finden Sie eine Liste der Vor- und Nachteile:

Profis

  • Bietet dank der zugrundeliegenden C-Bibliothek eine schnelle und effiziente Möglichkeit, XML- und HTML-Dokumente in Ruby zu parsen und zu manipulieren.
  • Es unterstützt mehrere Kodierungstypen und kann Dokumente mit komplexen Strukturen und Namensräumen verarbeiten.
  • Bietet Unterstützung für XPath, eine Sprache, mit der Sie in einem XML-Dokument navigieren und Elemente anhand ihrer Eigenschaften und Beziehungen auswählen können.
  • Unterstützt XSLT-Transformationen und DTD/XML-Schema-Validierung
  • Verfügt über eine breite Palette von Funktionen und Optionen, die es für fortgeschrittene Anwendungsfälle geeignet machen.
  • Sie wird von der Gemeinschaft gut unterstützt und ist eine stabile und gut dokumentierte Bibliothek.

Nachteile

  • Sie kann mehr Speicher verbrauchen als einige andere Bibliotheken, die reine Ruby-Implementierungen sind
  • Die API ist nicht so intuitiv und benutzerfreundlich wie einige andere Ruby-Bibliotheken zum Parsen von XML, was die Verwendung für weniger erfahrene Entwickler erschweren kann.
  • JSON-Parsing wird nicht nativ unterstützt, es sind zusätzliche Konfigurationen und Tools erforderlich, um JSON zu verarbeiten.
  • Sie kann möglicherweise nicht so gut mit missgebildetem XML umgehen wie einige andere Bibliotheken.

REXML

REXML ist eine reine Ruby-Bibliothek zum Parsen von XML-Dokumenten. Sie ist in der Standard-Ruby-Bibliothek enthalten, so dass sie einfach zu benutzen ist und keine zusätzliche Installation erfordert.

Inspiriert von der Electric XML-Bibliothek für Java, zeichnet sie sich durch eine einfach zu verwendende API, eine geringe Größe und Geschwindigkeit aus.

Edelstein-Kommando

gem install rexml

Code-Muster

require "rexml/document"

doc = REXML::Document.new(%{

<?xml version="1.0"?>

<Payment>

<Shop>ikea</Shop>

<Amount>199.99</Amount>

<Date>2023-01-12</Date>

</Payment>

})

doc.elements.each("//Shop"){ |element| puts element.text }

Pro und Kontra

Profis

  • Es ist in der Standard-Ruby-Bibliothek enthalten und lässt sich daher leicht installieren und verwenden.
  • REXML ist ein reines Ruby-Programm, das heißt, es ist nicht auf C-Bibliotheken oder externe Abhängigkeiten angewiesen und daher plattformunabhängig.
  • Es verfügt über eine einfache und benutzerfreundliche API, die es zu einer guten Wahl für kleine bis mittelgroße XML-Dokumente macht.
  • Verfügt über eine integrierte XPath-Implementierung, die das Suchen und Auswählen von Elementen in einem XML-Dokument erleichtert

Nachteile

  • REXML ist nicht so schnell wie andere Bibliotheken, wie z. B. Nokogiri, und es kann mehr Speicher verbrauchen, weshalb es für große XML-Dokumente nicht gut geeignet ist.
  • Es fehlen einige der fortgeschrittenen Funktionen anderer XML-Bibliotheken, wie z.B. die Handhabung von XML-Namespaces oder die erweiterte Fehlerbehandlung.

Selenium-Web-Treiber

Selenium WebDriver ist nicht in erster Linie ein HTML- oder XML-Parser, sondern vielmehr ein Werkzeug zur Browser-Automatisierung. Es ermöglicht Ihnen die programmgesteuerte Interaktion mit einem Webbrowser und simuliert Benutzeraktionen wie das Klicken auf Schaltflächen, das Ausfüllen von Formularen und das Navigieren zwischen Seiten.

Mit Selenium WebDriver können Sie Interaktionen mit Webbrowsern automatisieren, z. B. das Klicken auf Schaltflächen, das Ausfüllen von Formularen und das Navigieren zwischen Seiten.

Das Tool ist nützlich, wenn Sie eine Website scrapen müssen, die JavaScript verwendet, um ihren Inhalt dynamisch zu laden oder bestimmte Aktionen auszuführen, wie die Interaktion mit einem Formular oder einer Schaltfläche auf der Seite.

Edelstein-Kommando

gem install selenium-webdriver webdrivers

Code-Muster

require "selenium-webdriver"

require "webdrivers/chromedriver"

driver = Selenium::WebDriver.for :chrome

driver.get("https://webscrapingapi.com")

puts driver.title

Pro und Kontra

Hier sind einige der Vor- und Nachteile der Verwendung von Selenium WebDriver in Ruby:

Profis

  • Selenium WebDriver unterstützt eine breite Palette von Webbrowsern, darunter Chrome, Firefox, Edge, Safari und andere, was bedeutet, dass die von Ihnen erstellten Tests ohne Änderungen auf verschiedenen Browsern ausgeführt werden können.
  • Selenium WebDriver bietet eine Reihe von Möglichkeiten, den Inhalt einer Webseite zu untersuchen, wie z.B. das Auffinden von Elementen anhand ihrer ID, ihres Klassennamens oder ihres CSS-Selektors, was die Interaktion mit Webseiten und die Automatisierung von Aufgaben erleichtert.
  • Es erlaubt Ihnen, mit Javascript-Elementen auf Webseiten zu interagieren, diese Funktion macht es geeignet für das Testen des Verhaltens von Webseiten mit Javascript.
  • Es ist in der Branche weit verbreitet und gut dokumentiert und verfügt über eine große Gemeinschaft von Entwicklern, die Unterstützung leisten können.

Nachteile

  • Selenium WebDriver kann langsamer sein als andere HTML-Parsing-Bibliotheken, da es einen Browser starten und die Interaktion eines echten Benutzers simulieren muss, was die zum Scrapen der Daten erforderliche Zeit erhöhen kann.
  • Selenium WebDriver setzt voraus, dass ein Webbrowser auf dem Rechner installiert ist, was zu Problemen führen kann, wenn das Skript in einer Headless-Umgebung oder auf einem Server ohne GUI ausgeführt wird.
  • Selenium WebDriver ist keine spezialisierte Bibliothek für HTML-Parsing und seine API ist vielleicht nicht so intuitiv oder benutzerfreundlich wie spezialisierte Bibliotheken wie Nokogiri oder

Erwähnenswert

Obwohl wir uns auf aktive und gut gewartete Bibliotheken für das Parsen von HTML und XML in Ruby konzentriert haben, gibt es noch ein paar andere Bibliotheken, die man in Betracht ziehen sollte.

Es ist jedoch zu bedenken, dass diese Bibliotheken möglicherweise weniger aktiv gewartet werden oder weniger Unterstützung durch die Community haben, was bei Verwendung in einer Produktionsumgebung ein zusätzliches Risiko darstellen kann.

Es ist wichtig, die Funktionen und die Leistung der Bibliothek sowie den Umfang und die Komplexität der zu analysierenden Dokumente sorgfältig zu bewerten, bevor Sie eine Entscheidung treffen.

Hprikose

Hpricot ist ein weiterer beliebter Ruby-HTML-Parser mit Unterstützung für XML-Dokumente. Hpricot verfügt über eine einfache und benutzerfreundliche API und eignet sich gut für kleine bis mittelgroße Dokumente.

Edelstein-Kommando

gem install hpricot

Code-Muster

require "hpricot"

doc = "<!DOCTYPE html><html><head><title>Hello, World!</title></head><body>Hello, World!</body></html>"

puts Hpricot(doc).at("title").inner_html

Pro und Kontra

Hier sind einige Vor- und Nachteile der Verwendung von Hpricot:

Profis

  • Hpricot verfügt über eine einfache und leicht zu bedienende API, die das Navigieren und Durchsuchen von HTML- und XML-Dokumenten erleichtert.
  • Die Suchfunktionen von Hpricot basieren auf jQuery-ähnlichen CSS-Selektoren, die einfach zu verstehen und anzuwenden sind.
  • Da einige Teile von Hpricot in C geschrieben sind, ist die Bibliothek relativ schnell und effizient
  • Es ist für kleine bis mittelgroße Dokumente geeignet
  • Genau wie Nokogiri kann es missgebildete Dokumente parsen

Nachteile

  • Hpricot wird seit 2010 nicht mehr aktiv gewartet. Daher kann es sein, dass es mit neueren Versionen von Ruby nicht gut funktioniert und dass es an Unterstützung für neue Funktionen und Fehlerbehebungen mangelt.
  • Die Suchfunktionen von Hpricot unterstützen nicht alle CSS-Selektoren und auch keine XML-Namespaces.
  • Es kann keine missgebildeten XML-Dokumente verarbeiten
  • Die Leistung von Hpricot kann im Vergleich zu anderen Bibliotheken wie Nokogiri oder Ox langsamer sein und mehr Speicher verbrauchen, insbesondere bei größeren Dokumenten.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass für das Parsen von HTML- und XML-Dokumenten in Ruby eine Vielzahl von Bibliotheken zur Auswahl steht, die alle ihre eigenen Vor- und Nachteile haben.

Nokogiri, REXML, Ox, Hpricot und LibXML Ruby sind allesamt leistungsstarke Bibliotheken, die für Web Scraping verwendet werden können. Es ist jedoch wichtig, die spezifischen Anforderungen und Bedürfnisse Ihres Projekts zu evaluieren, bevor Sie sich für eine Bibliothek entscheiden.

Selenium WebDriver ist zwar nicht in erster Linie für HTML-Parsing konzipiert, kann aber auch für Web Scraping verwendet werden. Allerdings handelt es sich dabei um ein Browser-Automatisierungstool, das im Vergleich zu spezialisierten Bibliotheken zusätzliche Komplexität und eine langsamere Leistung mit sich bringt.

Die Erstellung eines Web-Scraping-Skripts kann jedoch eine zeitaufwändige und schwierige Aufgabe sein, vor allem, wenn Sie dynamische Websites, CAPTCHAs und Verbote handhaben müssen.

WebScrapingAPI bietet eine einfache und effektive Lösung zum Abrufen von Daten aus dem Web, ohne dass Sie ein eigenes Skript erstellen müssen. Mit der Funktion " Extraktionsregeln " können Sie ganz einfach Informationen aus einer Webseite abrufen, indem Sie die CSS-Selektoren des Elements angeben.

Warum erstellen Sie nicht noch heute ein Konto?

Nachrichten und Aktualisierungen

Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Vorschaubild
LeitfädenAmazon Scraping API - Startanleitung

Scrapen Sie Amazon effizient mit der kosteneffizienten Lösung von Web Scraping API. Greifen Sie auf Echtzeitdaten zu, von Produkten bis zu Verkäuferprofilen. Jetzt anmelden!

WebscrapingAPI
Autorenavatar
WebscrapingAPI
8 Minuten lesen
Vorschaubild
Wissenschaft des Web ScrapingScrapy vs. Selenium: Ein umfassender Leitfaden zur Auswahl des besten Web-Scraping-Tools

Erforschen Sie den detaillierten Vergleich zwischen Scrapy und Selenium für Web Scraping. Von der Datenerfassung in großem Maßstab bis hin zum Umgang mit dynamischen Inhalten - entdecken Sie die Vor- und Nachteile sowie die einzigartigen Funktionen der beiden Frameworks. Erfahren Sie, wie Sie das beste Framework für die Anforderungen und den Umfang Ihres Projekts auswählen können.

WebscrapingAPI
Autorenavatar
WebscrapingAPI
14 Minuten lesen
Vorschaubild
AnwendungsfälleNutzung von Web Scraping für alternative Daten im Finanzwesen: Ein umfassender Leitfaden für Investoren

Erforschen Sie die transformative Kraft des Web Scraping im Finanzsektor. Von Produktdaten bis zur Stimmungsanalyse bietet dieser Leitfaden Einblicke in die verschiedenen Arten von Webdaten, die für Investitionsentscheidungen zur Verfügung stehen.

Mihnea-Octavian Manolache
Autorenavatar
Mihnea-Octavian Manolache
13 Minuten lesen