HTML :: TableExtract不起作用

时间:2017-04-17 05:52:33

标签: html perl html-tableextract

输入html是attached (my $file),使用以下脚本,我无法提取我想要的表。有什么建议?

use strict;
use warnings;
use HTML::TableExtract;

my $file="view-source_www.nasdaq.com_dividend-stocks_dividend-calendar.aspx_date=2017-Apr-19.html";
open DATA,$file || die "cannot";

my $content;
{
    local $/ = undef; # slurp mode
    $content = <DATA>;
}
close DATA;

my $te;
$te = HTML::TableExtract->new( headers => [qw(Announcement_Date)] );
$te-> parse($content);

# Examine all matching tables
foreach my $ts ($te->tables) {
  print "Table (", join(',', $ts->coords), "):\n";
  foreach my $row ($ts->rows) {
     print join(',', @$row), "\n";
  }
}

1 个答案:

答案 0 :(得分:2)

这里有两个问题。

首先,正如jcaron指出in a comment,你没有解析正确的事情。你似乎在解析一个&#34;查看源&#34;页。您需要直接获取HTML。您可以使用LWP::Simple执行此操作。

headers

现在运行代码不会出错,但不幸的是,它也没有输出任何错误。这是因为你不正确地定义了对象构造函数的qw(Announcement_Date)参数。您使用$te = HTML::TableExtract->new( headers => ['Announcement Date'] ); 但没有表头,其值为&#34; Announcement_Date&#34;,因此找不到匹配的表。

如果将构造函数调用更改为:

@XmlRootElement
public class Greeting {
    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

然后你得到预期的输出。