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

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/31 13:00:18
  • 終了:2012/03/31 13:33:04

ベストアンサー

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932012/03/31 13:27:36

ポイント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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません