|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Michael Savin 2:5070/269 23 Oct 2001 20:31:22 To : all Subject : HTML Parsing -------------------------------------------------------------------------------- Подскажите как можно корректно перевести HTML-файл в текстовой. Я тут наваял простенькую вещь, но она корректно работает только для квазитекстового html-я. Хотелось перевести Programming Perl из пачки html-ек в один txt-файл... В общем, более-менее получилось, но... Ах да. У меня обрабатывается только информация из <div class="sect1"> ... </div>, которая в кождой html - одна. Это, кстати, тоже бага... :-) -+- h2t.pl---------------------------------------------------------- package MyParser; use HTML::Parser; use HTML::Entities qw(decode_entities); @ISA = qw(HTML::Parser); my $textfl=0; sub text { my($self, $text) = @_; if ($textfl) { print decode_entities($text); } } sub start { my($self, $tagname, $attr, $attrseq, $origtext) = @_; if ($textfl) { print "\n" if ($tagname eq "p"); print "\n" if ($tagname eq "pre"); } if ($tagname eq "div") { if ($origtext=~/"sect1"/) {$textfl++}; } } sub end { my($self, $tagname, $origtext) = @_; print "\n" if ($tagname eq "p"); if ($tagname eq "div") {print "\n";$textfl-- if ($textfl)} } package main; $p=MyParser->new; my (@files); foreach $file (<*.htm>) { $outfile=(split(/\./,$file))[0] . ".txt"; push (@files,$outfile); open FILE,">$outfile"; select FILE; $p->parse_file($file); select STDOUT; print "File $file parsed.\n"; close FILE; } # лечим файлы от лишних пустых строчек сверху и снизу. foreach $file (@files) { open FILE, "<$file"; @filedata=<FILE>; while (!($filedata[0]=~/^\S/)){defined(filedata[0]) or last;shift @filedata}; while (!($filedata[-1]=~/^\S/)){defined(filedata[-1]) or last;pop @filedata}; open FILE, ">$file"; print FILE @filedata; close FILE; print "File $file fixed.\n"; } #sunshine on the grave# --- asmъmetallicaъadomъforest sysops * Origin: depression feeling (2:5070/269) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/23453bd5d64c.html, оценка из 5, голосов 10
|