imdb.com Awardsセクションから特定の情報を抽出するためのコードを記述します。以下では、私は全体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";
}
}
}
としてテキストを印刷することができますが、それらのほとんどは、各「カテゴリのループを定義する方法も同じタグを持っているので、私は別のトークンを分離する方法がわからないスニペット/ recipient 'と入力し、改行があればそれを印刷します。
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を試してみました少ない成功。
ありがとうございました。