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(.*?)>\ \;(.*?)<\/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!).
|