Wikipediaから声優名一覧を取ってくるPerlスクリプトv2 (1) 2chを使ったスクリーニング案

この話。
Wikipediaから声優名一覧を取ってくるPerlスクリプト - XXXannex
Wikipediaから声優名一覧を取ってくるようにすると非常に楽ちんなのですが、Wikipediaは一度でも声の仕事をした方を「声優」とみなしてしまうポリシーのようなのでfalse positiveの割合がものすごく高い。

Category:日本の女性声優 - Wikipedia

目で見て除外すれば問題ないとはいえ、さすがに1000人以上のリストをチェックするのは面倒。男性声優は詳しくないし・・・。

ということで、「2chの声優個人スレッドに名前が載っているかどうか」という基準でスクリーニングしてみたらどうだろう、と思って試してみることにしました。2chの声優板に個人スレがあるならさすがに声優でしょ、という感じで。

まずは2chの「声優個人」板のURLをどうやって見つけてくるかというところですね。そのままハードコードしてもいいけど、せっかくだからbbsmenuから取ってくるようにした方がよいでしょう。

この辺を参考に書いてみる。ポイントは2点。

  1. Accept-Encodingにgzipを指定
  2. User-AgentにMonazillaを指定
use strict;
use warnings;
use LWP::UserAgent;

my $url_bbsmenu = 'http://menu.2ch.net/bbsmenu.html';

my $request = HTTP::Request->new(GET => $url_bbsmenu);
$request->accept_decodable;

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->agent("Monazilla/1.00");
 
my $response = $ua->request($request);
 
if ($response->is_success) {
  print $response->decoded_content;
}
else {
  die $response->status_line;
}

実行すると、HTTPのヘッダーはこんな感じになります。

GET /bbsmenu.html HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept-Encoding: gzip, x-gzip, deflate, x-bzip2
Host: menu.2ch.net
User-Agent: Monazilla/1.00
HTTP/1.1 200 OK
Date: Tue, 25 May 2010 08:30:28 GMT
Server: Apache/2.2.8
Last-Modified: Wed, 10 Mar 2010 09:10:38 GMT
ETag: "30842c-cd8b-4816eabf21f80"-gzip
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 13094
Connection: close
Content-Type: text/html

うまく行ってるようですね。あとはbbsmenuをスクレイピングして、声優個人からスレッド一覧を取ってくればOK。