Auction Watchingでデータが保存されない原因
この記事を読むのに 約4分20秒 かかります
深く掘り下げて調べていないですが、ちょっとだけわかりました。
strictでないけど、こんなスクリプトで実験。
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Cookies::Microsoft;
use Win32::TieRegistry(Delimiter => "/");
$PROXY_HOST = '';
$PROXY_PORT = '';
$targeturl = 'http://page.auctions.yahoo.co.jp/jp/auction/'.$ARGV[0];
$cookies_dir = $Registry->{"CUser/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/Cookies"};
$cookie_jar = HTTP::Cookies::Microsoft->new(File => "$cookies_dir\\index.dat",'delayload' => 1,);
$ua = LWP::UserAgent->new;
$ua->cookie_jar($cookie_jar);
if ($PROXY_HOST) {
$ua->proxy(['http', 'ftp'] => "http://$PROXY_HOST:$PROXY_PORT");
}
$res = $ua->request(HTTP::Request->new(GET => $targeturl));
print $res->content;
で、終了していない、開催中のオークションは、
>perl test.cgi c87026505 | nkf -s | more
<html>
<head>
<!--・-->
<TITLE>Yahoo!オークション - ★DIXCELディスクローター★ビート PP1 91/5?用★</TITLE>
</HEAD>
:
略
詳細情報が取れてるけど(実際はログインしてくださいという状態になっているよう)、終わっているオークションは、
>perl test.cgi 73550211 | nkf -s | more
<html>
<head><META HTTP-EQUIV="content-type" CONTENT="text/html; charset=euc-jp">
<link type="text/css" rel="stylesheet" href="http://login.yahoo.co.jp/i/reg2.css">
<script language="javascript" src="http://login.yahoo.co.jp/i/mc/mc.js">
</script>
<title>ログイン - Yahoo!オークション
</title>
</head>
:
略
ということで、せっかくIEのcookieを渡しているのに効かなくなったようで。いや、Yahoo!Auctionには効かないみたいだ。他サイトでは効くところもある。
Auction Watchingでは、詳細情報が取得できなかったときには、そのデータを破棄。それで終了した情報は全部蓄積されないわけだ。
まとめるとこうなるかな。
問題発生以前は、
開催中オークションはログイン○、情報取得○
終了オークションは、ログイン○、情報取得○
問題発生以降は、
開催中オークションはログイン×、情報取得○
終了オークションは、ログイン×、情報取得×
でもまあ、もともと方法が悪かったのかもしれない。HTTPのやりとりを解析すりゃわかるだろうけど、JavaScriptまで絡んできているよーな気もしたので、とりあえずここまで。
Spidering hacks―ウェブ情報ラクラク取得テクニック101選
posted with amazlet at 05.01.28
Kevin Hemenway Tara Calishain 村上 雅章
オライリー・ジャパン (2004/05)
売り上げランキング: 1,905
通常24時間以内に発送
オライリー・ジャパン (2004/05)
売り上げランキング: 1,905
通常24時間以内に発送
おすすめ度の平均:
混沌のWEBからデータを収集した人は必読ただの翻訳ではないすばらしい内容
掲載されたHackには、ユニークで興味深いものが多いです。
Posted by BB at 2005/01/28 10:37
Category : CHANGE LOG