【问题标题】:Perl : Extract an HTML element with a particular class using HTML::TokeParserPerl : 使用 HTML::TokeParser 提取具有特定类的 HTML 元素
【发布时间】:2015-06-14 08:47:00
【问题描述】:

我正在尝试提取与“tablehead1”类对应的

标记中存在的 HTML 内容。
< td class="tablehead1"> Market < /td >

在解析时,我得到了整个 html 文件中存在的

标签的所有文本内容。 但我只需要特定类“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"; }
}

【问题讨论】:

  • 另外length($text)&lt;30&amp;&amp;length($text)&gt;0 是可憎的。我所知道的不乏空格字符。加上$text and (length($text) &lt; 30) 好多了。

标签: html perl html-parsing


【解决方案1】:

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

替换

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

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

应该会给你预期的结果。此外,您应该添加检查实际的&lt;td&gt; 是否真的有一个键class,例如由

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

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2014-01-14
    • 2012-04-06
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2021-09-07
    • 1970-01-01
    相关资源
    最近更新 更多