URLs aus einer HTML-datei extrahieren

Da fragt mich doch jemand, wie man mit einem regulären ausdruck und sed die URLs aus einer HTML-datei extrahieren kann. Meine erste reakzjon: „Damit ist sed ein bisschen überfordert, das wird eine sehr lange zeile“. Aber ich habe ja nochmal nachgedacht, und dann fiel mir ein, dass der textbrauser lynx dieses problem schon hervorragend löst, und etwa zwei minuten später ging die folgende funktion für die sh raus:

getlinks()
{
  for i
  do
    lynx -dump -listonly "$i" | sed 1,3d
  done | sed "s/ *[0-9]*\. *//" 
}

Diese funkzjon getlinks kann mit beliebig vielen HTML-dateien oder auch gültigen URLs als parameter aufgerufen werden, und lynx erledigt den größten teil der arbeit. Heraus kommt eine Liste mit den URLs, jede hübsch einzeln auf einer zeile und ohne weiteren kram, der die weitere verarbeitung in einem skript erschwert. Die ausgabe wird mit zwei sed-befehlen gefiltert. Der erste entfernt die laufenden nummern, die am anfang der zeilen stehen. Das sollte eigentlich auch mit der lynx-opzjon -nonumbers gehen, aber unglücklicherweise verstand der lynx auf der kiste, auf der dieses skript laufen sollte, ausgerechnet diese eine opzjon nicht und wir hatten keine lust, schnell einen neuen zu kompilieren. Der zweite audruck löscht einfach nur die ersten drei zeilen, die eine hier störende überschrift enthalten. Wer diese funkzjon benutzen will, sollte sich aber vorher einmal die ausgabe von lynx -dump -listonly anschauen, denn es ist nicht auszuschließen, dass die ausgabe in anderen versjonen ein bisschen anders aussieht.

Wenn es eine wirkliche stärke unixoider betriebssysteme gibt, denn ist es die art, wie man sich die bestehenden programme „zusammenstecken“ kann, um mit relativ wenig aufwand komplexe probleme zu lösen. Das war in den siebziger jahren schon ein starkes konzept, und es ist auch vierzig jahre später noch unendlich nützlich. Leider gerät es mit dem vordringen grafischer klickflächen immer mehr in vergessenheit, selbst bei menschen mit guten technischen kenntnissen — und in der folge werden viele probleme mit viel zu großem aufwand gelöst.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.