我试图提取<中的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"; }
}
答案 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";