Erlernen der Grundlagen von Nokogiri Gem

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:

On Linux, we still need to install libxml2. The command for installing libxml2 will vary based on the package manager and Linux distribution we’re using.

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.

require ‘rubygems’

require ‘nokogiri’

require ‘open-uri’

As well as requiring the nokogiri gem we would need open-uri so that contents of a URL can be easily found. We then create a new Nokogiri HTML document and pass it the contents of the search results page. With that Nokogiri document we can then use at_css, passing the CSS selector “title” to retrieve the contents of the <title> element. The at_css method will return the first matching element and we can call .text on that element to get its text content. Finally we use puts to print out the text.

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=”Destroy sleep with this powerful energy shot – in a reusable shotgun shell bottle.”
alt=”Zombie Blast Energy Shots 3 Pack”
width=”125″
height=”125″
class=”lazy”
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>

This means in order to get the name of the products, we’d say:

Englisch: Starting at the root of the document: look in every div that has a class name containing the word ‘product’. Inside that find a link. In that link find h4 text.

XPath: //div[contains(@class,’product’)]/a/h4

The XPath equality operator only matches complete values, in this case a string. XPath only matches whole class names so div[@class=’product’] in Xpath would not work to get the last column as you might expect.

Referenz:

https://github.com/sparklemotion/nokogiri

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

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

German
English
English
Japanese
German
French
Spanish

WhatsApp uns

Beenden Sie die mobile Version