4

重複の可能性:
HTML をプレーンテキストに変換するには、どの CPAN モジュールをお勧めしますか?

質問:

  • HTMLレンダリングするモジュール、特にテキストを収集するモジュールはありますか?<tt><b><i> <br>

:

# cat test.html

<body>  
<div id="foo" class="blah">  
<tt>test<br>
<b>test</b><br>
whatever<br>
test</tt>
</div>
</body>

# lynx.exe --dump test.html

test
test
whatever
test

注: 2 行目は太字にする必要があります。

4

3 に答える 3

6

search.cpan.orgにアクセスしてHTML テキストを検索すると、特定のニーズに合わせて多くのオプションが提供されます。 HTML::FormatTextは適切なベースラインであり、リンクを脚注として保持する場合は、 HTML::FormatText::WithLinksなど、特定のバリエーションに分岐します。

于 2009-12-22T12:02:28.963 に答える
2

私は Windows を使用しているため、これを完全にテストすることはできませんが、 HTML::Parserに付属のhtextを適応させることができます。

#!/usr/bin/perl

use strict; use warnings;

use HTML::Parser;
use Term::ANSIColor;

use HTML::Parser 3.00 ();

my %inside;

sub tag {
   my($tag, $num) = @_;
   $inside{$tag} += $num;
   print " ";  # not for all tags
}

sub text {
    return if $inside{script} || $inside{style};
    my $esc = 1;
    if ( $inside{b} or $inside{strong} ) {
        print color 'blue';
    }
    elsif ( $inside{i} or $inside{em} ) {
        print color 'yellow';
    }
    else {
        $esc = 0;
    }
    print $_[0];
    print color 'reset' if $esc;
}

HTML::Parser->new(api_version => 3,
    handlers => [
        start => [\&tag, "tagname, '+1'"],
        end   => [\&tag, "tagname, '-1'"],
        text  => [\&text, "dtext"],
    ],
    marked_sections => 1,
)->parse_file(shift) || die "Can't open file: $!\n";;
于 2009-12-22T14:04:58.173 に答える