首相の名字をWebから自動取得してみる
スパムよけで、トラックバックURLに「日本の首相の名字」を含めさせるブログがある。しかし、首相は変わりうる。そこで、Webから自動取得してみる実験。
実用性はナシ。むしろ、スパマーを助けてる気もする。
kantei.go.jpから取得
PerlのWeb::Scraperを使って、kantei.go.jpの英語版から取ってきてみる。
#!/usr/bin/perl use strict; use warnings; use URI; use Web::Scraper; my $url = 'http://www.kantei.go.jp/foreign/index-e.html'; my $result = scraper { process '//h2/img[@src =~ /title_daijin\.gif\Z/]', 'text' => '@alt'; result 'text'; }->scrape(URI->new($url)); $result =~ s/\APrime Minister [^ ]+ ([^ ]+) *\Z/$1/; print lc($result), "\n";
プロフィール欄から名前を持ってきている。ただ、一般的に、プロフィールの見せ方は変わりがちなのが弱点だ。
cia.govから取得
デザインの変わりにくい、データベース的なページを探してみた。CIAの「World Leaders」コーナーがそれっぽい。
#!/usr/bin/perl use strict; use warnings; use URI; use Web::Scraper; my $url = 'https://www.cia.gov/library/publications/world-leaders-1/world-leaders-j/japan.html'; my $result = scraper { process '//tr/td[text() =~ /Prime Min\./]/../td[2]', 'text' => 'TEXT'; result 'text'; }->scrape(URI->new($url)); $result =~ s/\A[^ ]+\s+([^ ]+)\Z/$1/; print lc($result), "\n";
ただし、この政局のためか、試した時点では最新の閣僚名簿になっていないようだ。なので、首相が交代したときに反映されるタイミングは不明。
まとめ
Web::Scraper便利。HTMLのgrepって感じ。
コメント
コメントの投稿
トラックバック
https://emasaka.blog.fc2.com/tb.php/290-2e1f0810