<div id=aaa-bbb>
我编写了以下代码来抓取和下一个标签之间的文本内容</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 文档中只出现一次。
我还希望<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 中已经有双引号。