プログラミング

[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で詳細を見る
楽天で詳細を見る
ブックオフオンラインで中古品を見る


iPhone(携帯電話)用のAmazon書籍価格検索作りました - API仕様変更対応・過去相場調査機能・ブックオフオンライン対応

posted in 08:51 2010年09月30日 by 涼微
Comments(2) TrackBack(0)   プログラミング  WEB・インターネット このBlogのトップへ 前の記事 次の記事
iPhone用 Amazonマーケットプレイス書籍検索

自分の場合、ブックオフなどの中古書店に行った際に面白そうな本があったら、Amazonのマーケットプレイスでいくらぐらいで売られているのかということを調べるのですが、
1,iPhoneの画面サイズで見やすく
2,複数同時に書籍を検索できると
いう条件を満たす携帯検索があいにく見つからなかったので自作しました。

中古書店にてこの本を今買うべきかどうかマケプレ価格と相談する際や、せどりをする際に活用してくれたらいいのではないでしょうか。

使い方
・ISBN-10の書籍を検索する場合:先頭の数字「4」と一番後ろの数字を除いた8桁の数字を入力して下さい。

isbn10
の場合:48006237

・ISBN-13の書籍を検索する場合:先頭から3つの数字「978」と一番後ろの数字を除いた8桁の数字を入力して下さい。

isbn13
の場合:88759794

・「-」で区切ることで複数の書籍を一括で検索できます。この記号は、英語入力キーボードの数字モード表示で中段左端にあり入力しやすいと思います。

・半角数字、「-」以外の文字列を入力すると「数値を入力して下さい。」画面に移りますので「戻る」などを使って書き直して下さい。

注意点
・10月15日より1時間2000リクエスト制限が施行されましたので、今後、利用状況によっては複数同時検索などの機能の制限、ツールの休止・停止になる可能性もあります。しかし、アソシエイトの売上具合によってリクエストの上限が広がるということなので、当ブログもしくはiPhone用 Amazonマーケットプレイス書籍検索経由でAmazonの商品を購入して頂けると助かります。

ご意見・ご要望になどありましたらこの記事のコメント欄にてお願いします。

JavascriptでJSONPにクロスドメインアクセスし配列からランダムに文章を取り出して表示するサンプル

posted in 01:05 2009年12月10日 by 涼微
Comments(0) TrackBack(0)   WEB・インターネット  プログラミング このBlogのトップへ 前の記事 次の記事
クロスドメインで非同期に任意の場所にあるデータを呼び出すことが可能になると、様々なページで汎用的にデータを取り出して使用することができます。

ことブログに関してはそういった操作を行いたい場合に、プログラミング言語の選択肢として大抵の場合においてJavascriptを使うしかありません。

ということで、自分のブログにもクロスドメインデータを取り出す仕組みを利用するために、Javascriptの関数として呼び出すことでクロスドメインにデータを扱えるJSONPを使って、JSONPデータの配列からランダムに任意の文章を取り出すプログラムを書きました。

まずは、下記のような配列形式のJSONPファイルをつくります。

callback({"word" :
["ラッセルは、熱心な反戦反核の運動家で、九十代になっても街頭に出て、デモ、集会、座り込みの先頭に立ち、警察に逮捕投獄されることを辞しませんでした(八十代で一週間投獄されていたこともある。)http://www.amazon.co.jp/exec/obidos/ASIN/4163686800/isbn1-22/'>ぼくの血となり肉となった五〇〇冊 そして血にも肉にもならなかった一〇〇冊 p100",
"「迷ったときほど、先を見よ」私から見れば、二十年先、三十年先の未来を予測することよりも。二年先、三年先の短期的なビジョンを見通すことのほうが、ぶれ幅が大きく、難しい。 http://www.amazon.co.jp/exec/obidos/ASIN/4584131511/isbn1-22/'>孫正義 世界20億人覇権の野望 p7",
"生まれよりも育ちが大切だという説明を好む傾向は、古くからの偏見を正すのに役立つため社会的にも有益だった。しかし残念ながら、今日ではそれが少し行過ぎてしまっている。政治的公正さが大流行している昨今、差異の遺伝的基礎について考えることすらやりにくい状況が生まれいる http://www.amazon.co.jp/exec/obidos/ASIN/4062121727/isbn1-22/'>DNA p458",
"無矛盾性=どの定理も(ある想像可能な世界で)正しいと解釈できる場合。完全性=(ある想像可能な世界で)正しく、しかもそのシステム内で「よい列」として表現できる文がすべて定理である場合。 http://www.amazon.co.jp/exec/obidos/ASIN/4826901259/isbn1-22/'>ゲーデル,エッシャー,バッハ―あるいは不思議の環 p116"
]
});


一番始めの、「callback」と記述してある部分は関数の名前として使えるものなら何でも使用でき、「word」や「""」で囲まれた文書の部分はそれぞれ使用する際に適したように書き換えてください。

そして、このJSONPファイルを適当に呼び出し可能な場所におきます。私はXREAにレンタルサーバーを借りているので、http://www.ryoubi.com/jsonData.jsonpに置きました。

次に、上記のJSONPファイルを呼び出すためのJavascriptをブログの呼び出したい場所に下記のように記述します。

<script type="text/javascript">
<!--
function callback(json){
n = Math.floor(Math.random()*json.word.length);//配列の長さを元に乱数を生成し、変数に代入する
document.write(json.word[n]);
}
//-->
</script>
<script type="text/javascript" src="http://www.ryoubi.com/jsonData.jsonp"></script>


「callback」「word」の部分には、先程JSONPファイルに書いた各々の対応する文字を記述し、「json」の部分には新たに自分の好きな文字を入力します。最後に、最終行にJSONPファイルを置いたurl先を入力したら完成です。

そして、上記の通りに作ったプログラムの動作サンプルがこのブログの題名の下にある文章です。ページを更新すると、ランダムで文章が変わる様子を観察することができます。


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


フィギュア動画