0
我想編寫一個代碼從imdb.com獎項部分提取特定信息。隨着下面的代碼片段,我可以打印文本作爲一個整體如何使用HTML :: TokeParser提取數據
use strict;
use warnings;
use autodie;
use utf8;
use WWW::Mechanize;
use HTML::TokeParser;
#Example
my $url = 'http://www.imdb.com/title/tt1375666/awards';
my $mech = WWW::Mechanize->new;
$mech->agent_alias('Windows Mozilla');
$mech->get($url);
if ($mech->find_link(text_regex => qr/(?:Academy Awards|Golden Globes)/i)) {
my $tp = HTML::TokeParser->new(\$mech->content);
while (my $token = $tp->get_tag('big')) {
$token = $tp->get_trimmed_text('big');
if ($token =~ /(?:Academy Awards|Golden Globes)/) {
print "$token\n";
}
}
}
,但我不知道如何將不同的令牌分開,因爲他們大多具有相同的標籤,以及如何定義循環的每個「類別/收件人'並在新行上打印(如果存在)。
my $year = $tp->get_trimmed_text();
my $result = $tp->get_trimmed_text();
my $award = $tp->get_trimmed_text();
my $category = $tp->get_trimmed_text();
my $recipient = $tp->get_trimmed_text();
打印 「$每年$結果$ $獎項類別$收件人\ n」 個
- $年榮獲奧斯卡$類別$ recipient1..n
- 等
- $年提名奧斯卡$類別$ recipient1..n
- 等
- $年榮獲金球獎$類別$ recipient1..n
- 等
- $年提名金球獎$類別$ recipient1..n
- 等
我不知道這是否是最有效的方法,但我也嘗試過HTML :: TableExtract與多較少的成功。
謝謝。