Schrift
[thread]686[/thread]

RegEx und HTML...: oder doch besser HTML::Parser?

Leser: 3


<< >> 7 Einträge, 1 Seite
root
 2006-03-04 20:36
#7049 #7049
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
Hilfe!

ich möchte gerne aus einer HTML Datei die erste Headline rausschen. Am liebsten sind mir RegEx, da es möglichst auf jedem Webserver laufen soll und man nie weiss welche Module so installiert sind.

Hier mein Versuch, leider wird nichts gefunden.
Code: (dl )
1
2
3
4
5
6
7
        # Eine evtl vorhandene Headline finden, h1, h2, h3
foreach(1..3){
last if(length($summary{$loop_file_basename}{'summary_headline'}) > 1); # Wenn schon gefunden ende
$loop_content =~ m/$[^\<h$_\>]*\<h$_\>([^\<\/h$_\>]+)\<\/h$_\>/is;
$summary{$loop_file_basename}{'summary_headline'} = $1;
push @output_html, "Habe h".$_." gefunden:'".$summary{$loop_file_basename}{'summary_headline'}."'<br>\n";#TEST
}


Anschließend möchte ich gerne die ersten 150 Zeichen haben.
Wenn eine Headline gefunden wurde soll diese ausgeschlossen werden. Außerdem soll das ganze nicht direkt nach 150 Zeichen aufhören, sondern noch bis zur nächsten Wortgrenze gehen. Problem dabei ist, ich weiss nicht ob vielleicht ein <p> oder sowas dann noch nicht geschlossen wurde...
Da bin ich nicht nur RE mäßig ratlos...

Hier auch dazu ein nicht funktionierender Codeschnipsel:
Code: (dl )
1
2
3
        # Den oberen Teil rausfiltern. Angegebene Zeichenzahl aber erst bei Leerzeichen, die maximalanzahl kann also um die länge eines Wortes überschritten werden..
$loop_content =~ m/$(\Q$summary{$loop_file_basename}{'summary_headline'}\E)?(.{5,$summary_config{'summary_text_length'}})(\S+)\s/i;
$summary{$loop_file_basename}{'short_text'} = $1.$2;


Danke für eure Hilfe!
GwenDragon
 2006-03-04 20:42
#7050 #7050
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Besser HTML::Parser
Regexe greifen nicht immer richtig und sind auch manchmal unvollständig. Ich bin von Regexen für das Parsen längst abgekommen.
Linuxer
 2006-03-04 21:54
#7051 #7051
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Strikt betrachtet ist HTML-Code nicht regulär genug, um ihn mit RegEx zu parsen. Ich empfehle ebenfalls die Verwendung eines Parsers.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
anti
 2006-03-04 22:55
#7052 #7052
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
[quote=GwenDragon,04.03.2006, 19:42]... Ich bin von Regexen für das Parsen längst abgekommen.[/quote]
Für komplexe Sachen O.K. (wobei es für die meisten sowieso schon fertige Module gibt), aber:

(1) Warum für einfache Sachen generell auf so ein mächtiges Werkzeug verzichten?
(2) Was verwendest du stattdessen?
Dubu
 2006-03-05 02:03
#7053 #7053
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
(1) HTML ist nicht einfach (und es geht ja um HTML).
(2) HTML::Parser wurde doch schon genannt.
renee
 2006-03-05 15:10
#7054 #7054
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Im Wiki findest Du ein paar Beispiele für CPAN:HTML::Parser. Es gibt aber auch noch andere Module, mit denen man das Problem lösen kann. Z.B. CPAN:HTML::TreeBuilder...
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/
root
 2006-03-05 23:49
#7055 #7055
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
ich wühl mich so durch...
So richtig einfach ist der HTML::Parser auch nicht!

Vielen Dank für die vielen Tipps!

Ich werde über meine Fortschritte berichten!
<< >> 7 Einträge, 1 Seite



View all threads created 2006-03-04 20:36.