WWW::Mechanize

[API仕様変更対応]WWW::MechanizeでAmazonからマケプレ価格情報を取得する

posted in 16:31 2011年10月27日 by 涼微
Comments(0) TrackBack(0)   プログラミング  WEB・インターネット このBlogのトップへ 前の記事 次の記事
API仕様変更対応しました → iPhone用 Amazonマーケットプレイス書籍検索

今回の10月26日のProduct Advertising API(PA-API)仕様変更は、Amazon側としても金にならないリクエストは御免被るよ!ということで、PA-APIから色々と機能を削除した(特にアソシエイトと関係の薄いやつ)と思われるのだけど、利用者側としてもそれは困るので何とか他の方法を考えてしまうわけです。

APIの制限解除申請したら今まで通り使えるとか、制限解除申請したのにやっぱり制限されてたとか、いろいろな声がありますが、制限されると言うアナウンスを見て自分はすぐに以下のコードを作ったので、備忘録として残しておきます。

これは、WWW::Mechanizeを使ったマケプレ価格情報の取得方法ですが、おそらくAmazonサイトからスクレイピングで情報を抜き出すのはあまり推奨されていない行為(誰か明確なソースを知っていたら教えて下さい)なので、ご利用は自己責任でお願いします。

use WWW::Mechanize;
use Encode;

my $enc_object = find_encoding("utf-8");

my $mech = WWW::Mechanize->new();

#ユーザーエージェントを設定しないとAmazonにアクセスできない
$mech->agent_alias('Windows IE 6');

#価格情報を取得したい本のISBN-10
my $isbn = "4478005338";
$mech->get("http://www.amazon.co.jp/gp/offer-listing/$isbn/");

#指定した本のコンテンツを取得
my $ama = $mech->content;
my $ama = $enc_object->encode($ama);

my @price = ();
my $item;

#価格情報を取得し終わるまで@priceに格納
while ($amazon =~ /class=\"price\">¥ (.*)<\/span>/g) {
$item = $1;
$item =~ s/,//;
push(@price, $item);
}

これで配列@priceにISBNを指定した本の出品者全員のマケプレ価格情報が低価格な方から入っていると思います。

こうした方が速いとかこういう方法もあるよ、ということを知っていらっしゃるプログラミング中・上級者の方はご教授して下さいましたら大変助かります。

Spidering hacks―ウェブ情報ラクラク取得テクニック101選
amazonで詳細を見る
楽天で詳細を見る
ブックオフオンラインで中古品を見る


サイト内検索
トラックバック
MenuBar2 (角沢研(仮)‐岡本倫 ノノノノ、エルフェンリートのファンサイト (PukiWiki/TrackBack 0.3))
歴史・平和ボケ・一つの結論方法・エルフェンリート
燃えよ剣(上)・(下) (おこって、おこって、ないて、わらって。)
燃えよ剣/司馬 遼太郎
トラックワード
あわせて読みたい


フィギュア動画