この話。
Wikipediaから声優名一覧を取ってくるPerlスクリプト - XXXannex
Wikipediaから声優名一覧を取ってくるようにすると非常に楽ちんなのですが、Wikipediaは一度でも声の仕事をした方を「声優」とみなしてしまうポリシーのようなのでfalse positiveの割合がものすごく高い。
目で見て除外すれば問題ないとはいえ、さすがに1000人以上のリストをチェックするのは面倒。男性声優は詳しくないし・・・。
ということで、「2chの声優個人スレッドに名前が載っているかどうか」という基準でスクリーニングしてみたらどうだろう、と思って試してみることにしました。2chの声優板に個人スレがあるならさすがに声優でしょ、という感じで。
まずは2chの「声優個人」板のURLをどうやって見つけてくるかというところですね。そのままハードコードしてもいいけど、せっかくだからbbsmenuから取ってくるようにした方がよいでしょう。
この辺を参考に書いてみる。ポイントは2点。
- Accept-Encodingにgzipを指定
- 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。