Schrift
[thread]3058[/thread]

Nur tatsächliche Texte aus HTML parsen (Seite 2)

Leser: 3


<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
renee
 2007-05-11 12:48
#29005 #29005
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Froschpopo:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

use strict;
use warnings;

local $/;
my $html = <DATA>;
(my $neu = $html) =~ s/<[^>]*>//gs;
print $neu;

__DATA__
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Frosch Test</title>
</head>
<body>
  <div>Die Bedingung <pre>4 < 5 </pre> ist wahr!</div>
</body> 
</html>


Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
fral20857@fral20857:~$ perl froschpopo.pl 



Frosch Test


Die Bedingung 4 ist wahr!


fral20857@fral20857:~$
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/
Froschpopo
 2007-05-11 14:12
#29006 #29006
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das ist kein konformes HTML.
< ist ein Umlaut und wird &lt; geschrieben
renee
 2007-05-11 14:35
#29007 #29007
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
*) Es ist valides HTML 4.01 strict
*) Man weiß nie was man von außen bekommt...\n\n

<!--EDIT|renee|1178879739-->
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/
murphy
 2007-05-11 15:27
#29008 #29008
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Um wieder zum eigentlichen Thema zurückzukommen: Würde es sich für so eine Aufgabe nicht lohnen, auf das geparste HTML zum Beispiel mit XPath / XQuery loszugehen?
When C++ is your hammer, every problem looks like your thumb.
ptk
 2007-05-13 12:23
#29009 #29009
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Froschpopo,11.05.2007, 12:12]< ist ein Umlaut[/quote]Huch?
Quote
und wird &lt; geschrieben

Das mag sein.
ptk
 2007-05-13 12:26
#29010 #29010
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=murphy,11.05.2007, 13:27]Um wieder zum eigentlichen Thema zurückzukommen: Würde es sich für so eine Aufgabe nicht lohnen, auf das geparste HTML zum Beispiel mit XPath / XQuery loszugehen?[/quote]
XPath wäre auch mein Favorit. Da man nicht davon ausgehen kann, dass man XHTML bekommt, kann man leider nicht XML::LibXML verwenden, aber vielleicht lohnt ein Blick auf die Kombination aus HTML::Parser und XPath: CPAN:HTML::TreeBuilder::XPath
GwenDragon
 2007-05-13 13:02
#29011 #29011
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,11.05.2007, 12:12]das ist kein konformes HTML.
< ist ein Umlaut und wird &lt; geschrieben[/quote]
Was für ein (X)HTML als Quelle benutzt wird, wurde nicht im Startpost gesagt.
Und ein < muss eben nicht immer und überall als &lt; kodiert sein.

[quote=murphy,11.05.2007, 13:27]Da man nicht davon ausgehen kann, dass man XHTML bekommt, kann man leider nicht XML::LibXML verwenden[/cpan][/quote]Wieso das? Was soll sich da nicht parsen lassen?

Das Risiko, dass es schlecht balancierten oder gar ungültigen Quell-Code gibt, ist doch sowieso vorhanden.\n\n

<!--EDIT|GwenDragon|1179047348-->
Nordlicht
 2007-05-14 02:06
#29012 #29012
User since
2005-10-16
182 Artikel
BenutzerIn
[default_avatar]
Danke für alle bisherigen Vorschläge, ich hab mir noch nicht alles angeschaut. Das hier nur nochmal zum Verständnis:

Beispiel: Wenn ihr in Wikipedia nach Perl sucht, bekommt ihr diese Seite: http://de.wikipedia.org/wiki/Perl

Ich möchte von Dieser Seite den Text über Perl (egal, wie er formatiert ist), eventuell den Text der Links (nicht die Linkadresse) und sonst nichts. Keine Tags dazwischen, keine Scripte,kein CSS, Formulare, etc. Nur den Text am laufenden Meter.
Und ich weiß vorher nicht, wie der HTML-Code aussehen wird, ich muss auf alles gefasst sein.

Mit HTML::Parser geht das ja auch. Ich müsste nur irgendwie den Array mit dem gefilterten Text zurückgeben können.

Ich überlege inzwischen, ob ich das Problem auf andere Weise umgehen kann... Sozusagen "um den heißen Brei herum" programmieren :) Ich sag bescheid, wenn es mir gelungen ist.
betterworld
 2007-05-14 06:03
#29013 #29013
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=Froschpopo,11.05.2007, 12:12]das ist kein konformes HTML.
< ist ein Umlaut und wird &lt; geschrieben[/quote]
Und das hier?

Code: (dl )
1
2
3
Hallo <!-- Kommentar <i> Auch noch Kommentar! </i> -->

<a onclick="alert(4>5)">foo</a>
renee
 2007-05-14 12:08
#29014 #29014
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hier dürfte eine ganz gute Basis sein:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl

use strict;
use warnings;
use HTML::Parser;
use LWP::Simple;
use Data::Dumper;

my $url = '[URL=http://foo-magazin.de]http://foo-magazin.de[/URL]';
#my $url = '[URL=http://de.wikipedia.org/wiki/Perl]http://de.wikipedia.org/wiki/Perl[/URL]';
my $content = get($url);

if( $content ){
    my @text_parts;

    my $parser = HTML::Parser->new();
    $parser->ignore_elements(qw/head/);
    $parser->handler( 
        text => sub{ 
            push @text_parts, grep{!/^[\s\n]*$/}@_ 
        },
        "dtext" 
    );
    $parser->handler( comment => sub {""} );
    $parser->parse($content);

    print Dumper(\@text_parts);
}
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/
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



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