Schrift
[thread]3058[/thread]

Nur tatsächliche Texte aus HTML parsen

Leser: 3


<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
Nordlicht
 2007-05-09 20:04
#28995 #28995
User since
2005-10-16
182 Artikel
BenutzerIn
[default_avatar]
Hi Leute,

Ich habe hier ein Programm, mit dem ich die Texte auf Webseiten analysieren möchte. Dazu verwende ich HTML::TreeBuilder, was auch ganz gut funktioniert, solange man bestimmte Tags oder Attribute sucht.

Jetzt brauche ich aber einen speziellen Filter, der allen tatsächlichen "Text" (nicht den Text in Links, Buttons, Menüs, etc, sondern reinen Text) herausfiltert. Dabei soll es egal sein, ob er groß, klein, fett, kursiv, eingerückt, als Überschrift oder sonstwie eingebettet ist.

Wenn ich das mit TreeBuilder mache, müsste ich nacheinander jeden Tag auf Kids und jedes Kid auf Text untersuchen. Und dann stellt euch mal solch einen HTML-Code vor oder ähnliches vor:

Code: (dl )
1
2
3
4
5
6
7
8
9
<blockquote>
<font attribute="...">
Irgend ein eingerückter,
<i>kursiver und
<b>fetter</b>
</i>
Text
</font>
</blockquote>


ich müsste außerdem eine Liste aller Tags verwalten, die potentiell Text enthalten könnten. Nein danke, ich brauch was besseres.

Gruß, Aaron.
renee
 2007-05-09 20:44
#28996 #28996
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schonmal CPAN:HTML::Parser mit der Funktion ignore_elements oder ignore_tags getestet?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Nordlicht
 2007-05-10 23:27
#28997 #28997
User since
2005-10-16
182 Artikel
BenutzerIn
[default_avatar]
HTML::Parser ist ne schöne Sache, aber mein Filter muss einen Array zurückgeben können, ein geparster String nützt mir nix.

Die Filter-Sub befüllt einen Array mit dem Text, der durch den Filter kam, diesen Array muss ich in der Haupt-Routine irgendwie weiterverwenden und er muss in der Haupt-Routine privat (my) sein. Die einzige Möglichkeit ist deswegen meiner Meinung nach ein Rückgabewert, der in den privaten Array gefüllt wird.

Noch ne Idee?
MisterL
 2007-05-11 00:14
#28998 #28998
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Also wenn das Ergebnis der Parse Aktion in einer Datei gespeichert wird, kann CPAN:Tie::File evtl. einen Blick wert sein...
Oder warum nicht gleich der Data::Dumper ? CPAN:Data::Dumper
“Perl is the only language that looks the same before and after RSA encryption.”
Froschpopo
 2007-05-11 01:48
#28999 #28999
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
($neu = $html) =~ s/<[^>]*>//gs #tags entfernen

Umlaute, Leerzeichen (&nbsp;) usw. musst du dann noch gesondert umwandeln.
renee
 2007-05-11 09:43
#29000 #29000
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Froschpopo: Und wie filterst Du damit die Texte von Links und Menüs raus?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-05-11 09:45
#29001 #29001
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Nordlicht: Und warum sollte man mit CPAN:HTML::Parser nicht ein Array befüllen können? Poste doch mal etwas HTML und das was Du als Ergebnis haben willst. Im Moment würde alles in reiner Spekulation enden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-05-11 11:54
#29002 #29002
User since
2005-01-17
14554 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,10.05.2007, 23:48]
Code: (dl )
($neu = $html) =~ s/<[^>]*>//gs #tags entfernen
[/quote]
Oh Frosch. Das Regex parst eben nicht korrekt bei HTML.
Anfängerfehler. Deswegen soll eine ja einen richtigen Parser verwenden.
Lies mal perlfaq9.pod
http://wiki.perl-community.de/bin....95;stri\n\n

<!--EDIT|GwenDragon|1178870486-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

GwenDragon
 2007-05-11 12:08
#29003 #29003
User since
2005-01-17
14554 Artikel
Admin1
[Homepage]
user image
@Nordlicht
Wäre CPAN:HTML::FormatText was für dich?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Froschpopo
 2007-05-11 12:18
#29004 #29004
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,11.05.2007, 09:54][quote=Froschpopo,10.05.2007, 23:48]
Code: (dl )
($neu = $html) =~ s/<[^>]*>//gs #tags entfernen
[/quote]
Oh Frosch. Das Regex parst eben nicht korrekt bei HTML.
Anfängerfehler. Deswegen soll eine ja einen richtigen Parser verwenden.
Lies mal perlfaq9.pod
http://wiki.perl-community.de/bin....95;stri[/quote]
Warum nicht? was gibts denn noch außer Tags und Sonderzeichen?

Vielleicht wären noch Angaben in value=""-attributen von Interesse aber sonst... ?\n\n

<!--EDIT|Froschpopo|1178871574-->
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2007-05-09 20:04.