« 6月18日 放棄放棄 | メイン | 学会誌をたくさん借りてきた »
2008年06月18日
IANA から TLD の情報を抽出するスクリプト
TLD の組織名や URL を抽出するスクリプトを書きました。Whois Gateway を作成中なのです。数年前にも作成していたのですが、頓挫していました。
use strict; use warnings; use LWP::Simple; my $base = 'http://www.iana.org/domains/root/db/'; my $html = get($base); my $re = '<td><a href="/domains/root/db/([\w\.-]+)">([^<]+)</a></td>' . '<td>([^<]+)</td><td>([^<]+)<'; while ($html =~ /$re/go) { my $tld = $2; my $type = $3; my $org = $4; my ($url, $whois) = get_tld_info(get($base . $1)); printf("%s\t%s\t%s\t%s\t%s\t\n", $tld, $type, $org, $url, $whois); sleep 2; } sub get_tld_info { my ($html) = @_; my $url = ''; my $whois = ''; if ($html =~ m|<b>URL for registration services:</b> <a [^>]+>([^<]+)</a>|) { $url = $1; } if ($html =~ m|<b>WHOIS Server:</b> ([^<]+)<|) { $whois = $1; } return $url, $whois; }
ご利用は自己責任で…。
作成している Whois Gateway は CPAN の Net::Whois::Raw を利用していますが、拡張性がイマイチです。特に HTTP 経由で情報を取得する TLD を追加する場合、基のソースを弄らないといけない(オーバーライドで一部だけ弄れるのかな)。また、設定されている WHOIS Server が少なかったり古かったり。
パッチファイル作成にチャレンジしてみようかな。
【関連情報】
・IANA — Root Zone Database
http://www.iana.org/domains/root/db/
・Walery Studennikov / Net-Whois-Raw - search.cpan.org
http://search.cpan.org/dist/Net-Whois-Raw/
2008年06月18日 23:41 | Programming