本を読む

読書やコンピュータなどに関するメモ

首相の名字を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って感じ。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/290-2e1f0810

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad