Perl:使用 HTML::TokeParser 提取具有特定 class 的 HTML 元素

Perl : Extract an HTML element with a particular class using HTML::TokeParser

我正在尝试提取与 class "tablehead1".

相对应的 < td > 标签中存在的 HTML 内容
< td class="tablehead1"> Market < /td >

解析时,我得到了整个 html 文件中 < td > 标签的所有文本内容。 但我只需要 < td > 标签中带有特定 class "tablehead1" .

的内容

下面的代码哪里出错了?

use HTML::TokeParser;

open(DATA,"<KeyStats.html") or die "Can't open data";
my $p = HTML::TokeParser->new(*DATA);

while (my $token = $p->get_tag('td')) {

 my $url = $token->[1]{class} || "tablehead1";
 my $text = $p->get_trimmed_text("/td");

 if (length($text)<30&&length($text)>0) {  print "$text\n"; }
}

您并没有真正执行检查 class 是否真的 tablehead1

替换

my $url = $token->[1]{class} || "tablehead1";

来自

next unless $token->[1]{class} eq "tablehead1";

应该会给你预期的结果。此外,您应该添加检查实际 <td> 是否真的有密钥 class,例如通过

next unless grep( /^class$/, @{$token->[2]} ) && $token->[1]{class} eq "tablehead1";