PerlのLWPを使って下記サイトのHTMLを取得・解析しています。

http://www.madamu.tv/main.asp

ブラウザで見ると現在オンライン中の女性一覧が表示されています。
この女性一覧をPerlのLWPなどを使って取得したいのですが、
ソースを見てみるとAjaxでソースが隠ぺいされております。

上記サイトの女性一覧を取得する方法を教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/03/31 13:33:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント300pt

ごく普通のチャットサイトなので利用規約には引っかかってないですよね。たぶん。
ajaxの部分を読んでみました。
ttp://www.madamu.tv/OnlineData.asp?prm=0.15478485287167132
ttp://www.madamu.tv/BeforeOnlineData.asp?prm=0.49901601392775774
この2箇所からJSONでデータを持ってきているようです。後ろの数字はランダムにしてキャッシュ回避。
perlなどでアクセスする際は以下のようにリファラを偽装すればJSONを取得できることを確認しました。

use LWP::UserAgent;
use strict;
use warnings;

my $url = "http://www.madamu.tv/OnlineData.asp?prm=0.1547848528716718";
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => "$url");

#リファラの設定
$req->referer("http://www.madamu.tv/main.asp");
my $res = $ua->request($req);

if($res->is_success){
	print $res->content;
}else{
	print $res->status_line;
}


参考:Perl LWP::UserAgentでのリファラの偽装: プログラミング研究室

id:yohsuke25

なるほど。
「~/OnlineData.asp?prm=***」からJSONのデータを得ていたことはわかっていたんですが、
実際にHTTPでGETしてみると何も返ってこなくておかしいなと思っていたんです。
リファラが必要だったんですね、盲点でした。
ありがとうございました。

2012/03/31 13:32:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません