我知道many other posts related到HTML::TableExtract模塊,但他們都比我目前所瞭解的要高得多。我有一個非常小的表(3行,5列)從電子郵件,我想刮在第二行的所有數據。然而,由於我對Perl的瞭解有限,在線上編輯文檔後,我遇到了很多麻煩。如何從引用打印的編碼HTML表格中提取數據?
表看起來是這樣的:
Time notspam probablespam likelyspam spam
2012-05 10252205 62192 55995 3797710
Total "" "" "" ""
這裏是我試圖解析的代碼片段。這是三行中的第二行:
<tr class=3DmailViewUnreadOdd>
<td class=3DreportViewHeader align=3D"left">
=09
2012-05
</td>
=20=20
=20=20=20=20
<td align=3D'right' class=3D'mailViewRowReadEven'>
10252205
=20=20=20=20
</td>
=20=20
=20=20=20=20
<td align=3D'right' class=3D'mailViewRowReadEven'>
62192
=20=20=20=20
</td>
=20=20
=20=20=20=20
<td align=3D'right' class=3D'mailViewRowReadEven'>
55995
=20=20=20=20
</td>
=20=20
=20=20=20=20
<td align=3D'right' class=3D'mailViewRowReadEven'>
3797710
=20=20=20=20
</td>
=20=20
</tr>
這是我到目前爲止嘗試過的。我在HTML :: TableExtract頁面上使用了一個例子,並對其進行了修改以適合我的需要。但它不返回任何東西:
use HTML::TableExtract;
my $te = HTML::TableExtract->new(
headers => [qw(notspam probablespam likelyspam spam)]);
my $html = 'test.html';
$te->parse($html);
# Examine all matching tables
foreach $ts ($te->tables) {
print "Table (", join(',', $ts->coords), "):\n";
foreach $row ($ts->rows) {
print join(',', @$row), "\n";
}
}
我想拉出日期(2012-05)和數量(10252205,62192,55995,3797710),並將其存儲在變量。我應該使用深度和計數參數來提取數據嗎?
[你有什麼嘗試?](http://whathaveyoutried.com) – 2012-06-04 14:45:19
嗯,我原本打算使用HTML:Parse,但後來發現我應該使用HTML:TableExtract。我已經嘗試過使用深度和數量,但我不確定我是否做得對。老實說,我討厭成爲SO上的「那個人」,但我對Perl沒有太多的瞭解。我試圖把所有東西拼湊起來,並隨着我的走向學習。 我想我所發現的是,拉取信息的最好方法是按標題搜索,所以我會尋找「mightspam,likelyspam,spam等」。 –