PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Perl] formatierter Output in Datei



majobu
07-12-2004, 15:23
Hi zusammen,
Mit einer URL die ich durch verschachtelte Schleifen gebildet habe, bin ich nun glücklicherweise in der Lage bestimmte URLs abzurufen und in eine Datei zu speichern.

Das Ergebnis sieht aber sehr unschön aus da alle HTML-Tags auftauchen und ausserdem interessiert mich nur ein kleiner Teil der Informationen.

Die Daten rufe ich so ab:


----schnipp----
use HTTP::Request;
use HTTP::Response;
use HTTP::Headers;
use URI::URL;
use LWP::UserAgent;
----schnipp -----
# zusammenfassen von i j k und l m n
my $gc0 = sprintf("%s%s%s",$i,$j,$k);
my $gc1 = sprintf("%s%s%s",$l,$m,$n);

# URL zusammensetzen
my $addrurl = "http://www.xyz.de/cgi-bin/s.pl?sid=$sid&c0=$gc0&c1=$gc1";
my $url = new URI::URL($addrurl);
my $req = new HTTP::Request(GET, $url);
my $ua = new LWP::UserAgent;
my $resp = $ua->request($req);

# und zur Kontrolle ausgeben auf dem Bildschirm
print "$url\n";

# ist das Ergebnis OK
if ($resp->is_success)
{
print $resp->content;
my $ergebnis = $resp->content;

# das Resultat wird in eine Datei gespeicher... (Filehandle schon offen)
print RESULTOUTPUT $ergebnis;
}
else
{
# wenn das Ergebnis nicht OK, dann Fehler auf den Bildschirm
print $resp->message;
}


Wie kann ich nun aus dem Ergebnis das mir $resp->content (kommt wohl von LWP:UserAgent (?)) liefert weiter Filtern und das auch noch ohne HTML-Tags sondern als eine formatierte ausgabe?

In dem Ergebnis kommt zum Beispiel folgendes vor:


href="/cgi-bin/s.pl?sid=ABCDEF&amp;ood=123456Z">XXX</a></td><td>XXX</td></tr><tr><td class="highlight">B</td><td class="highlight">


Ich will nur die Daten geliefert haben bei denen


ood=AAAAAAA">BBBBBBBB</a></td><td>CCCC</td></tr><tr>

steht und das dann Formatiert in eine Datei ausgeben. Z.B.:


AAAAAAA,BBBBBBB,CCCC

AAAAAAA wir immer 7 Stellen lang sein. Für mich kommt eine weitere Schwierigkeit hinzu... nämlich das BBBBBBBBB keine fixe Länge hat aber maximal 17 STellen lang sein und auch Sonderzeichen enthalten kann. CCCC wird vermutlich niemals 4 Stellen überschreiten.

Ich habe irgendwo gelesen das dies alles mit HTML::Parser möglich sein soll. Ich komme bis jetzt nicht damit klar weiß überhaupt nicht wie ich das bei mir einbauen könnte.

Könnt ihr mir da helfen? Ich bin total blutiger Anfänger und weiß vor lauter Informationen schon gar nicht mehr wo ich anfangen muß. Das Problem ist nämlich das ich diese Auswertung irgendwie bis nächste Woche hinkriegen muß... :o

Tausend Dank..

Gruß
Marcus

az.
08-12-2004, 17:30
perldoc perlrequick

aussehen sollte es in etwa (ungetestet):



my @richtige_ergebnisse = ( $ergebnis =~ /.*;ood=(.*)\">(.*)<\/a>.*<td>(.*)<\/td>/ );


oder so was in der richtung.