2017-04-17 6 views
-1

入力HTMLはattached (my $file)です。次のスクリプトでは、私が望むテーブルを抽出できません。助言がありますか?HTML :: TableExtractが機能しません

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

ファイルは、実際には、別のページの(エスケープされた)ソースを含むHTMLページです。おそらく元のHTMLであり、エンコードされたHTMLではありません。 – jcaron

+0

[HTML :: TableExtractは美しいです](https://www.nu42.com/2012/04/htmltableextract-is-beautiful.html)...「うまくいかない」とは助けになりません。 –

答えて

2

2つの問題があります。

まず、jcaronin a commentを指摘しているので、正しいことを解析していません。あなたは "ビューソース"ページを解析しているようです。 HTMLを直接入手する必要があります。 LWP::Simpleでそれを行うことができます。

コードを実行するとエラーは発生しませんが、残念ながら出力がありません。これは、オブジェクトコンストラクタへの引数を間違ってheadersという引数を定義しているためです。 qw(Announcement_Date)を使用しますが、値が "Announcement_Date"のテーブルヘッダーがないため、一致するテーブルは見つかりません。

あなたはこれにコンストラクタ呼び出しに変更した場合:

$te = HTML::TableExtract->new(headers => ['Announcement Date']); 

を次にあなたが期待される出力を得ます。

関連する問題