Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Perl/Bash-Script zum URL greppen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Software
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mirror
Gast





BeitragVerfasst am: 08. März 2001 10:31   Titel: Perl/Bash-Script zum URL greppen

Hallo!

Ich suche nach einem Script, dass aus einer bzw. mehreren HTML-Dateien die reinen URL's aus den <a href... Tags extrahiert und untereinander in ein extra File schreibt. Beispiel:

http://bla.blub.de/bla.htm
http://sonnenschein.waere.schoen/sonne.html

Mit Grep und nem passenden Regulären Ausdruck komme ich leider nicht zum Ziel. Jemand sagte zu mir, dass hier Perl sehr geeignet sein soll, aber leider kann ich kein Perl ;(

TIA, mirror
 

ratte
Gast





BeitragVerfasst am: 08. März 2001 17:24   Titel: Re: Perl/Bash-Script zum URL greppen

pipe folgendes in ein file:

---schnipp---
#!/usr/local/bin/perl -w

# Name the outputfile to something you'd like:

$Trefferliste = "out.datei";

# Sammle die dateinamen ein:

foreach $datei (@ARGV) {

open(FUN,"<$datei")||die "Can't open file $datei";

@text = <FUN> ;

close (FUN) ;

foreach $ergebnis ( @text ) {

$ergebnis =~ /\"(http:[\w\W]*)\"/ig;
open (GUN,">>$Trefferliste")||die "Can't write to $Trefferliste";
print GUN $1 . "
" if $1;
close GUN ||die "Couldn't close filehandle $Trefferliste";
}
}
exit;
---schnapp---

mach ein chmod +x darauf.

rufe es so auf :

filename.pl datei1 datei2 datei3 ...datein

have fun

ratte
 

mirror
Gast





BeitragVerfasst am: 08. März 2001 21:59   Titel: Re: Perl/Bash-Script zum URL greppen

danke!!

cu, mirror
 

ratte
Gast





BeitragVerfasst am: 09. März 2001 9:18   Titel: Re: Perl/Bash-Script zum URL greppen

hi, beim quickhack und nicht gruendlich nachdenken kommt natuerlich nix bei raus.

das script ist buggie und funkt nur in sonderfaellen.

bei zeit poste ich hier n update, falls kein sed-zauberer vorbeikommt...

ratte
 

ratte
Gast





BeitragVerfasst am: 09. März 2001 10:22   Titel: Re: Perl/Bash-Script zum URL greppen

dies hier hat eine bessere regular expression und sortiert doppelte links aus.

---schnipp---
#!/usr/local/bin/perl -w

$Trefferliste = "out.datei";

#
# Einlesen der Html-Dateien
#

foreach $datei (@ARGV) {
open(FUN,"<$datei")||die "Can't open file $datei";
@text = <FUN> ;
push @htmltext, @text;
}
close (FUN) ;

#
# init $langezeile
#

$langezeile ="";

#
# Zeilenumbrueche loeschen, alle dateien bilden nun eine zeile
#

foreach $zeile (@htmltext) {
chomp $zeile;
$langezeile = $langezeile . $zeile;
}

#
# extended regular expression (case insensitive, global)
# die Klasse [] enhaelt die erlaubten Zeichen einer Url (vollstandig???)
#

while ($langezeile =~ /<a href=\"(http:[\/\w\d\.\-\?\+\=\%\&]*)\"/ig) {
push @urlsammel, $1 . "
" if $1;
}

#
# aussortieren der doppelten urls
#

foreach $zeile (@urlsammel) {
$flag = 1 ;
foreach $row (@linkliste) {
if ($row eq $zeile) {
undef $flag;
}
}
push @linkliste, $zeile if $flag;
}

#
# loeschen der Ausgabedatei
#

unlink $Trefferliste;

#
# Ausgabe in Zieldatei
#

open(GUN,">>$Trefferliste")||die "Can't open file $Trefferliste";

foreach $ausgabe (@linkliste) {
print GUN $ausgabe;
}
close (GUN) || die "Couldn't close filehandle $Trefferliste";

exit;
---schnapp---

ratte
 

ratte
Gast





BeitragVerfasst am: 09. März 2001 11:24   Titel: Re: Perl/Bash-Script zum URL greppen

hi, ich bin's nochmal.

dummerweise schluckt das eingabeformular Teile des Inputs.

push @urlsammel, $1 . " " if $1;

ist falsch, denn in den Anfuehrzeichen soll kein space stehen, sondern ein Backslash und ein kleines n.

d.i. ein newline, damit die url jeweils eine eigene Zeile bekommen.

ratte
 

ratte
Gast





BeitragVerfasst am: 14. März 2001 15:57   Titel: Re: Perl/Bash-Script zum URL greppen

und weils so schoen spass macht, gleich noch ein anderes script hinterher:

remrem.pl

What the hell is this? It is 'REMoveREMarks'!

remrem.pl deletes lines starting with a '#'
from a given file-one and writes it to file-2

Syntax : /usr/local/bin/remrem.pl inputfile outputfile

---schnipp---
#!/usr/local/bin/perl -w

sub usage {
print "
\What the hell is this? It is \'REMoveREMarks\'!

remrem.pl deletes lines starting with a \'\#\'
from a given file-one and writes it to file-2

Syntax : $0 inputfile outputfile

";
}

if (!$ARGV or $ARGV) {
usage;
exit;
}

#
# Einlesen der Quell-Datei
#

open(FUN,"<$ARGV[0]")||die "Can't open file $ARGV[0] for reading";
@quelltext = <FUN> ;
close (FUN)||die "Can't close filehandle." ;

open(GUN,">>$ARGV")||die "Can't open file $ARGV for writing";

foreach $zeile (@quelltext) {
if ( ! ($zeile=~ /^(#+)/ ) ) {
print GUN $zeile;
}
}

close(GUN)||die "Can't close filehandle.";

exit;
---schnapp---

man beachte wieder, dass backslash n hier falsch interpretiert wird.

fun
ratte
 

cerberusger



Anmeldungsdatum: 28.12.2000
Beiträge: 348
Wohnort: Muenchen

BeitragVerfasst am: 22. März 2001 16:01   Titel: Re: Perl/Bash-Script zum URL greppen

cat eingabedatei | sed -e "s/.*<a.*=\"//" | sed -e "s/\">.*//" > ausgabedatei

oder

cat eingabedatei | grep http | cut -f2 -d"\"" > ausgabedatei (setzt aber voraus, dass in einer zeile nur die url in " " steht)
_________________
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Software Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy