devcorner.schlenker-webdesign.de > WWW > RSS-/RDF-Newsfeeds extrahieren
Home Unix LaTeX WWW Print
Diese Seite wurde am 1. April 2006 vorübergehend auf statisch umgestellt. Einige der vorgestellten Tutorials sind veraltet, Links tot und die Zeitangaben stimmen auch nicht. Im Laufe der nächsten Monate wird eine überarbeitete Seite folgen, auf die dann weitergeleitet wird.

RSS-/RDF-Newsfeeds extrahieren

RDF (Resource Definition Framework) ist ein XML-Standard zur einheitlichen Gliederung und Beschreibung von Webinhalten. Einige Email-Clients (z.B. Evolution) unterstützen diesen Standard und viele Redaktionssysteme (oder Content-Management-Systeme / CMS) bieten Möglichkeiten, aus RDFs Linklisten zu generieren.

Das hier vorgestellte Perl-Script extrahiert die News-Überschriften aus der Startseite der Evangelischen Kirche Deutschlands und schreibt sie in eine RDF-Datei. Das zweite Script liest die News von Counterpane.

Zum Einsatz der erzeugten Newsfeeds ist anzumerken, daß sie vermutlich in den Bereich der legitimen Auswertung von Nachrichtenquellen fällt, wie sie der BGH zugunsten der Suchmaschine Paperboy erlaubt hat (Story bei Spiegel und bei Heise.de). Dennoch sollten Sie im Einzelfall den Urheber der Seite oder wenigstens Ihren Anwalt konsultieren.

Installation und Anpassungen

Es gibt nichts zu installieren. Rufen sie das Perl-Script entweder direkt mit dem Perl-Interpreter auch oder setzen sie es auf ausführbar und rufen sie es direkt auf.

Aufruf und Verwendung

Das Script folgt der Devise KISS (Keep It Simple & Stupid). Es liest von STDIN und schreibt nach STDOUT. Das Holen der Webseite zum gewünschten Zeitpunkt und die Ausgabe in eine Datei sollen Programme erledigen, die das besser können.

Der folgende Befehl verwendet Lynx um die EKD-Webseite abzuholen, erzeugt eine RDF-Datei und leitet diese nach /tmp/ekd.rdf um.

     lynx -source http://www.ekd.de/ | perl ekd-rdf.pl > /tmp/ekd.rdf

Für den regelmäßigen Einsatz empfiehlt sich die Verwendung als Cronjob.

Funktionsweise

Betrachten wir den Quellcode näher:

  if (/RedDot-EKD-Newsfenster/i && $line < 1) {
    $inside = 1;
    $line++;
  }

Beim ersten Kommentar "RedDot-EKD-Newsfenster" schalten wir die Suche an. Gleichzeitig werden die Zeilen gezählt. In der Regel findet man solch einen Kommentar um einen Block.

  if (/RedDot-EKD-Newsfenster/i && $line > 0) {
    $inside = 0;
  }

Taucht der Kommentar ein weiteres Mal auf, kann die Suche abgeschalten werden.

  if ($inside > 0) {
    if (/<a(.*?)\"(.*?)\"><img(.*?)>\&nbsp\;(.*?)<\/a>/i) {
      print "<item>\n ";
      print "<title>".$4."</title>\n ";
      print "<link>http://www.ekd.de".$2."</link>\n";
      print "</item>\n\n"
    }
  }

Hier wird nach einem Hyperlink gefahndet. Zwischen den Anführungszeichen steht der Link, noch relativ zum Wurzelverzeichnis. Es folgt ein Bild und ein ,,Non-Breaking-Space'', dahinter der beschreibende Text und der schließende a-Tag.

Wichtig sind die Werte der zweiten Klammer (.*?). Hier findet ein minimales Matching beliebiger Zeichen zwischen den zwei Anführungszeichen statt und die vierte Klammer, wo ebenfalls beliebige Zeichen gematcht werden. Beide Blöcke stehen nun als Variablen $2 und $4 zur Verfügung und werden im folgenden an die Standardausgabe geschrieben.

Download

ekd-rdf.pl RDF-Generator für die EKD-Webseite (1,5kB).
counterpane-rdf.pl RDF-Generator für Counterpane (1,5kB).
sco-rdf.pl RDF-Generator für SCO-Pressemitteilungen (1,5kB).
ekd.txt Beispieldatei (wird nicht aktualisiert!).


/dev/corner news
Visitenkarten mit LaTeX (27.10.2004)
X.org unter FreeBSD 5.2.1 (25.07.2004)
Kurzanleitung OpenOffice.org und MySQL (SuSE) (14.05.2004)
Neues Howto -- OpenOffice.org und PostgreSQL (FreeBSD) (02.05.2004)
Tip des Tages (FreeBSD) -- Multisession Datensicherung quick and dirty (18.04.2004)
Tip des Tages (Linux/Unix) -- Wörterbuch auf Tastaturshortcut (18.02.2004)
Werbung
Christall Folientechnik – Kastenhauben und technische Folien in Sondergrößen
Cycle-Sport GmbH Heilbronn – Ihr Spezialist für sportliche Mountainbikes
www.getriebeteile.com – Ihre günstige Quelle für Ersatzteile von PKW-Getrieben
Impressum · Mattias Schlenker · 04275 Leipzig · · ms@mattiasschlenker.de · 02.04.06, 14:49:34