<p>
.htmlファイルにアクセスして、タグ内のテキストを抽出しようとしています。論理的には、以下の私のコードは機能するはずです。HTML::TreeBuilderを使用する。HTMLを解析してから、<p>
find_by_attribute( "p")を使用してテキストを抽出します。しかし、私のスクリプトは空のディレクトリで出てきました。私は何かを省略しましたか?
#!/usr/bin/perl
use strict;
use HTML::TreeBuilder 3;
use FileHandle;
my @task = ('ar','cn','en','id','vn');
foreach my $lang (@task) {
mkdir "./extract_$lang", 0777 unless -d "./extract_$lang";
opendir (my $dir, "./$lang/") or die "$!";
my @files = grep (/\.html/,readdir ($dir));
closedir ($dir);
foreach my $file (@files) {
open (my $fh, '<', "./$lang/$file") or die "$!";
my $root = HTML::TreeBuilder->new;
$root->parse_file("./$lang/$file");
my @all_p = $root->find_by_attribute("p");
foreach my $p (@all_p) {
my $ptag = HTML::TreeBuilder->new_from_content ($p->as_HTML);
my $filewrite = substr($file, 0, -5);
open (my $outwrite, '>>', "extract_$lang/$filewrite.txt") or die $!;
print $outwrite $ptag->as_text . "\n";
my $pcontents = $ptag->as_text;
print $pcontents . "\n";
close (outwrite);
}
close (FH);
}
}
私の.htmlファイルは.aspWebサイトからのプレーンテキストhtmlです(例:http: //www.singaporemedicine.com/vn/hcp/med_evac_mtas.asp)
私の.htmlファイルは次の場所に保存されます:
./ar/*
./cn/*
./en/*
./id/*
./vn/*