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

时间:2015-04-09 05:56:48

标签: html perl html-parsing

我试图提取<中的HTML内容。 td>对应于类" tablehead1"。

的标签
< td class="tablehead1"> Market < /td >

在解析时,我获得了&lt;的所有文本内容。 td&gt;标签存在于整个html文件中。 但我只需要&lt;中的内容。 td&gt;标签与特定类&#34; tablehead1&#34;

我在下面的代码中哪里出错了?

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"; }
}

1 个答案:

答案 0 :(得分:1)

您并未真正检查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";