次のコードを書いて<div id=aaa-bbb>
と next</div>
タグの間のテキスト コンテンツをスクレイピングしましたが、HTML ソース全体しか出力されません。
use LWP::Simple;
$url = 'http://domain.com/?xxxxxxx';
my $content = get($url);
$data =~ m/<div id="aaa-bbb">(.*?)<\/div>/g;
if (is_success(getprint($url))) {
print $_;
}
# or using the following line directly without if statement
print $data;
私が興味を持っている HTML 部分は次のようになります。
<div id="aaa-bbb">
<p>text text text text text text text text text</p><p>text text text</p>
</div>
その特定のdiv
タグ ID は、HTML ドキュメント全体で 1 回だけ表示されます。
<p></p>
また、後でテキスト ファイルとして保存したり再利用したりするために、タグを削除するか、出力を改行で整理することも考えています。
あなたの貴重なコメントを読んだ後
、
代わりにWWW::Mechanize
and
を使ってみましたWWW::Mechanize::TreeBuilder
use strict;
use warnings;
use WWW::Mechanize;
use WWW::Mechanize::TreeBuilder;
my $mech = WWW::Mechanize->new;
WWW::Mechanize::TreeBuilder->meta->apply($mech);
$mech->get( 'domain.com/?xxxxxx' );
my @list = $mech->find('div id="aaa-bbb"'); # or <div id="aaa-bbb"> or "<div id="aaa-bbb">"
foreach (@list) {
print $_->as_text();
}
単純なタグでは機能しますが、 では機能しません<div id="aaaa">
。何も出力せずにスクリプトを終了するだけです。二重引用符と一重引用符を使用しましたが、タグ ID 内に既に二重引用符が含まれています。