Open Source im professionellen Einsatz
Linux-Magazin 03/2012
1167

Javascript extrahiert Visitenkarte

Listing 7 zeigt Microdata JS im Einsatz. Dieses Beispiel extrahiert mittels Javascript die Mikrodaten für Visitenkarten und hebt sie im Vcard-Format hervor. Nach dem Laden des HTML-Dokuments führt es die Funktion aus, die in Zeile 1 dem Ereignis »onload« zugewiesen ist. Die »$« -Funktion in Zeile 2 enthält einen CSS-Selector-Ausdruck. Sie sucht nach Elementen, die das Attribut »itemtype« mit der Angabe des Hcard-Vokabulars enthalten. Die Elemente der Ergebnismenge übergibt »each()« an die darauf folgende Funktion.

Listing 7

Programmieren mit Microdata JS

01 window.onload = function() {
02  $('[itemtype="http://microformats.org/profile/hcard"]').each(function(index) {
03   var item = $(this);
04   item.append('<a class="microlink">microdata</a>');
05   item.find("a.microlink").click(
06    function() {
07     $(this).parent().prepend('<div class="microdata">
   <a class="microlink close">close</a><textarea >'
   +jQuery.microdata.vcard(item)+'</textarea></div>');
08     item.find('.close').click(
09      function() {
10       item.find('.microdata').remove()
11      }
12     );
13    }
14   );
15  });
16 }

Die Variable »item« in Zeile 3 nimmt eine Referenz auf das aktuelle Element aus der Sondervariablen »this« auf. Dieser Wert ist im Folgenden in allen Ausdrücken, auch in der Funktionsdefinition ab Zeile 6, sichtbar (lexikalischer Scope). Führt der User später die Funktion ab Zeile 6 durch Klicken auf einen Hyperlink mit der Eigenschaft »class="microlink"« aus, erinnert sich Javascript an den Wert von »item« . Zuvor fügt Zeile 4 aber mit der Append-Funktion jedem in Zeile 2 ausgewählten Element einen Hyperlink mit der Eigenschaft »class="microlink"« hinzu. Zeile 5 belegt das Klick-Event dieses Hyperlinks mit der ab Zeile 6 definierten Funktion. Auch der Ausdruck »$(this).parent()« in Zeile 7 verweist auf den Wert der Variablen »item« . Im Kontext der Find-Methode aus Zeile 5 verweist »this« ab Zeile 6 nicht mehr auf Elemente mit dem Itemtype-Attribut, sondern auf die mit Find ausgewählten Hyperlinks. Erst der Aufruf der Methode Parent wählt das Objekt aus Item wieder aus.

Einfacher ist es, wie in den folgenden Codezeilen die Variable Item zu verwenden. Die Prepend-Funktion in Zeile 7 fügt nach erfolgtem Klick das Item-Element einem Eingabebereich hinzu, der mit den Daten im Vcard-Format gefüllt ist. Dazu kommt die Methode »vcard« aus Microdata JS zum Einsatz, auch in Zeile 7. Für den ebenfalls hinzugefügten Hyperlink der Klasse »close« definiert Zeile 9 auch einen Eventhandler. Ein weiterer Klick schließt den geöffneten Bereich wieder. Abbildung 5 zeigt die extrahierten Mikrodaten in der geöffneten Detailansicht. Microdata JS kann eingelesene Mikrodaten mit Hilfe passender Plugins auch in den Formaten Json oder Vevent ausgeben. Es bietet viele Funktion zum Arbeiten mit Mikrodaten, die jedoch leider nicht über den Quelltext hinaus dokumentiert sind. Außerdem bietet Microdata JS ein Frontend namens Live zum Extrahieren von Mikrodaten im Browser.

Abbildung 5: Von Mikrodaten zur Visitenkarte fürs Adressbuch: Ein wenig Javascript und die Bibliothek Microdata JS haben die benötigten Informationen aus der Beispiel-Webseite extrahiert.

Die Programmiersprache Python bietet mit der Bibliothek Microdata [16] einen Parser für Mikrodaten in HTML-5-Dokumenten. Sie erscheint ohne nähere Lizenzangaben als Public Domain. Listing 8 zeigt zunächst die Installation von Microdata 0.3.0 unter Ubuntu 11.10. Dabei wird die Python-Bibliothek »html5lib« gegebenenfalls nachinstalliert. Listing 9 demonstriert die Arbeit mit Microdata in einer interaktiven Python-Sitzung. Dazu ruft Zeile 1 zunächst Python über die Kommandozeile auf, Zeile 2 importiert das Modul Microdata.

Listing 9

Microdata interaktiv

01 $ python
02 >>> import microdata
03 >>> items = microdata.get_items(open("microdata.html"))
04 >>> print items[1].json()
05 {
06   "geo": [
07     {
08       "latitude": [
09         "37\u00b0 38\u2032 N"
10       ],
11       "longitude": [
12         "5\u00b0 98\u2032 W"
13       ]
14     }
15   ],
16   "dtstart": [
17     "2012-03-23T21:00:00Z"
18   ],
19   "type": "http://www.data-vocabulary.org/Event",
20   "location": [
21     "Sevilla"
22   ],
23   "summary": [
24     "Feria de Abril"
25   ]
26 }

Listing 8

Installation von Python Microdata

01 wget http://pypi.python.org/packages/source/m/microdata/microdata-0.3.0.tar.gz
02 tar xzvf microdata-0.3.0.tar.gz
03 cd microdata-0.3.0/
04 sudo python setup.py install

Durch Anwendung der Methode »get_items()« auf das geöffnete Dateihandle von »microdata.html« extrahiert anschließend Zeile 3 alle Mikrodaten aus dem HTML-5-Dokument und speichert sie im Feld »items« . Der Aufruf der Methode »json()« in Zeile 4 konvertiert die Mikrodaten in das Json-Datenformat. Alternativ könnte die Methode »dict()« die Mikrodaten in ein Python-Dictionary überführen.

Auch andere Sprachen bieten Open-Source-Parser für Mikrodaten, beispielsweise Ruby mit Mida [17], Perl mit dem Modul HTML::Microdata [18], PHP mit PHP Microdata [19] oder Java mit Any23 [20]. Das letztere Tool parst nicht nur Mikrodaten, sondern konvertiert eine Vielzahl von Meta-Angaben zwischen verschiedenen Formaten. Mögliche Eingabeformate sind: RDF, Mikrodaten oder Mikroformate in (X)HTML 5, Turtle, N-Triples, N-Quads, RDF in XML oder CSV. Die Ausgabe erfolgt wahlweise in Turtle, N-Triples, N-Quads, RDF/XML oder Json.

Fundgrube WWW

Mikroformate machen die Inhalte von Webseiten fit für die programmgesteuerte Weiterverarbeitung, beispielsweise durch Suchmaschinen oder Konverter. Zu diesem Zweck ergänzen sie die Texte in HTML-Dokumenten nach einfachen Regeln. Dieses Prinzip hat HTML 5 in Form der Mikrodaten übernommen. Mit Mikroformaten und Mikrodaten gelingt es, Informationen so aufzubereiten, dass sie sich automatisiert extrahieren und weiterverarbeiten lassen, wozu verschiedene Open-Source-Tools und Bibliotheken bereitstehen.

Schon ein wenig Spielerei mit dem Firefox-Plugin Operator lässt ahnen, was sich mit diesen Datenformaten machen lässt. Je mehr Webseiten-Anbieter künftig auf Mikroformate und -daten setzen, umso einfacher wird es, die gewünschten Informationen aus dem bisher unübersichtlichen WWW zu bergen. (mhu)

Der Autor

Der Dipl.-Phys. Andreas Möller http://pamoller.com beschäftigt sich seit zehn Jahren mit der Entwicklung Internet-basierter Software. Dazu zählen Datenbankanwendungen, Webanwendungen sowie Arbeiten auf dem Gebiet des Single Source Publishing. Zurzeit ist er als Berater und freier Autor tätig.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Kostenloses Lesefutter: Datenbanken, Embedded, Energiesparen und Plotten

    Mit Erscheinen der aktuellen Ausgabe 02/13 rückt das Linux-Magazin 04/12 in den kostenlosen Bereich, denn auf Linux-Magazin Online sind alle Ausgaben zum Nulltarif zu lesen, die älter als 10 Monate sind.

  • Perl-Snapshot

    Mikroformate zeichnen HTML-Seiten mit allgemein anerkannten Tags aus, zum Beispiel Verbindungen zu sozialen Netzwerken oder Geokoordinaten. Das erlaubt automatischen Auswertern, sie zu sammeln und grafisch aufzubereiten. Nützlich ist das zum Beispiel bei Geodaten zur Routenplanung.

  • W3C holt Feedback zu HTML 5 ein

    Das World Wide Web Consortium (W3C) steht vor der Verabschiedung der Spezifikation für HTML 5 und verwandte Technologien. In dieser Phase ist die Öffentlichkeit zum Kommentieren eingeladen.

  • Verkaufstalent

    In traditionellen Wirtschaftsbereichen wie dem Einzelhandel hat Linux ein großes Potenzial. Der Erfolg der Handelskette Globus beim Einsatz von Debian GNU/Linux auf Kassensystemen lässt für künftige Projekte Optimismus aufkommen.

  • Perl-Snapshot Linux-Magazin 2012/10

    Perlmeister Michael Schilli hat seinen Snapshot verfilmt.

comments powered by Disqus

Ausgabe 07/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.