Links aus HTML-Dateien extrahieren

Jan 'RedBully' Seiffert redbully at cc.fh-luh.de
Tue Sep 5 17:57:05 CEST 2006


Siegfried Peter wrote:
> Hallo Liste,
Halli-Hallo

> Ich würde gern die Links zu bestimmten Servern aus diversen HTML-Dateien
> extrahieren und in eine zweite Datei schreiben.
> Mein Lösungsansatz:
> 
> #!/bin/bash
> cd /home/foo/
> find -name '*.htm' -exec cat {} \; | grep 'URL1.com'
>> /home/foo/URLS.html
> find -name '*.htm' -exec cat {} \; | grep 'URL2.COM'
>>> /home/foo/URLS.html
> exit 0
> 
Geht schon in die richtige Richtung..

> liefert mir zwar alle Zeilen in denen einer der Suchbegriffe vorkommt,
> jedoch auch den Rest der in dieser Zeile steht.
> Wie kann ich jetzt noch den eventuellen Rest der nicht zum Link gehört
> eliminieren (Zeilenanfang bis zum Link, vom Link bis zum Zeilenende bzw.
> zum nächsten Link, eventuell muss nach nem Link ein Zeilenumbruch
> eingefügt werden)?
> 
RegEx und die richtigen Optionen bei grep ;)

z.B:

find . -iname '*.htm*' -exec grep -hoP '<[aA][^>]+>.*?</[aA]>' \{\} \;

-h: keine Dateinamen davorstellen
-o: nur das auasgeben, was auf das Pattern matched
-P: Perl RegEx benutzen

Bei der Regex da oben muesste man jetzt nur noch auf MATCH_DOT_ALL
umstellen, damit man auch links ueber mehrere Zeilen rausgrepen kann.

Das kann man weiter begreppen nach dem href oder die RegEx weiter
ausbauen...

[snip]
> 
> Danke für jede Hilfe
> 
> Siegfried Peter
> 
Gruss
	Jan

-- 
...the nipple is the only 'intuitive' user interface



More information about the Linux mailing list