WEB・インターネット

[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先を入力したら完成です。

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


新しく登場したふぁぼられ数把握サービスfavstar.fmとFavotter(ふぁぼったー)のふぁぼられに関する比較をしてみた

posted in 12:05 2009年07月11日 by 涼微
Comments(0) TrackBack(0)   WEB・インターネット  このBlogのトップへ 前の記事 次の記事
ふぁぼられも気になるけど…
Twitterユーザーなら持っておきたいクレジットカード!
 ↓
JMBローソンPontaカードVisa カード

オススメの理由はこちら
Twitterユーザーなら持っておきたい!つぶやくだけでポイントが貯まるJMBローソンPontaカードとは?

2011年11月の追記

favstarは日本語版も出て使い勝手はこの2年でかなり良くなっています。favが補足される率はfavstarの方が高く、また同時にツイートの公式RTも確認できるためfavstarの方が使いやすくなっているという印象。
 
以下、2009年7月に書かれた記事


Twitterのタイムライン(TL)を眺めていると新しくふぁぼられ数を把握するサービスとして外国産のfavstar.fm(作者:@timhaines氏)なるものが出来たらしいという事を知ったので、早速自分のアカウントを使ってFavotter(ふぁぼったー)(作者:@ono_matope氏)とふぁぼられに関する結果を見比べてみました。

すると(8/7)現在の私のFavotterにおけるふぁぼられ数は118でfavstar.fmのふぁぼられ数は41という半分以下という結果(そもそもPopularもRecentもつぶやきを20件分しか表示しないからこれだけ少なく出るみたい。クロール自体はもっとしているようです)が出ました(*1)。ぜひ皆さんも自分のアカウントで試してみてください。

まだまだ現状ではふぁぼられ数を把握するためにFavotterにはクロールしている数で追いついてないようですが、それでもfavstar.fmが使える点として若干クロールしている対象が違う(参考URL:http://d.hatena.ne.jp/ono_matope/20090614)のでFavotterでは見られなかったあの人にもふぁぼられていたんだ!とか確認することが出来る点が挙げられます。他にも、Favotter(ふぁぼったー)はアクセスが繋がらない時がぼちぼちあるのでその時の代替用にもこのfavstar.fmを使ってみるのも良いかもしれません。

それと、外国産のサービスなので向こうではどんなつぶやきがセンスがあってふぁぼられているのかなど知る事が出来るのも日本産のFavotterと趣が違うところですね。
(Favotter英語版も有りました:http://favotter.matope.com/en/)

使用中のFirefoxアドオン&userChrome.js一覧とfirefox3.5に未対応のアドオンを強制的に互換させる方法

posted in 10:53 2009年07月09日 by 涼微
Comments(0) TrackBack(0)   コンピュータ  WEB・インターネット このBlogのトップへ 前の記事 次の記事
私はブラウザにFirefoxを使用しているのですが、その大きな理由はアドオンを使用してブラウザを拡張すると様々な追加機能が使う事が出来るので利便性が高いからです。(Operaもデフォルトで高機能という話もよく聞きますがもう一つ使いこなせていません)

という事でこのページでは、自分自身の拡張機能整理がてら私がインストールしている使用中のFirefoxアドオン&userChrome.jsの一覧を載せてみたいと思います。

ちなみにuserChrome.jsは主にFirefoxを遅くさせるアドオン要因で遅延と認定されているアドオンを代替するために使っています。

また、依然としてFirefox3.5に対応していないアドオンも複数含まれていますので、そういったアドオンを強制的に使おうとする場合はNightly Tester ToolsMR Tech Toolkitなどを使って強制的に互換とみなすなどして下さい!(ただし自己責任でお願いします)

アドオン

  1. AutoAuth…一度Firefoxにログイン情報を保存したHTTP認証ダイアログを表示させなくする事が出来ます。
  2. ColorZilla…カラーピッカー(WEB上のカラー情報を調べる機能。)
  3. Configuration Mania…Firefoxの隠し設定を簡単にカスタマイズ出来ます。
  4. Download Statusbar…ステータスバーでダウンロードの状況を確認することが出来ます。
  5. DownThemAll!…閲覧中のページ上でリンクされている画像やファイルを一括でダウンロード出来ます。
  6. Easy DragToGo…テキストを選択した状態でドラッグ&ドロップする事でその単語を検索出来るなど様々なオプションを追加出来ます。
  7. Extended Statusbar…ステータスバーに、ページの読み込み比率、読み込まれた画像の数、ダウンロード済みバイト数、平均ダウンロード速度、読み込み時間が表示されます。
  8. FEBE…ブックマークや設定、拡張機能などをバックアップする事が出来ます。
  9. FireFTP…ブラウザ上でFTPクライアント(FTPを使用してファイルの送受信を行うソフト)を使う事が出来ます。
  10. Gmail Notifier…ツールバー上でGmailに新着メールが届いたか確認する事が出来ます。

  11. Google Toolbar for Firefox…Firefox用のGoogleツールバーです。
  12. goo辞書…右クリックメニューからgoo辞書を引く事が出来ます。
  13. Hatena Bookmark…ブラウザ上からはてなブックマークを使いやすくする事が出来ます。
  14. IE View…右クリックメニューからInternet Explorerで開く事が出来ます。
  15. Link Evaluator…Webページでリンクが切れているURLがあるか検証する事が出来ます。
  16. Live HTTP headers…HTTPヘッダの内容を確認する事が出来ます。
  17. Make Link…リンクをHTMLやTEXTの状態などでコピーする事が出来ます。
  18. MeasureIt…WEbページ上をpx単位で計る事が出来るアドオン。
  19. MediaWrap…Windows MediaやQuickTime形式の動画など、ページ上にActiveXオブジェクトとして埋め込まれているコンテンツを、Firefoxが対応しているプラグインで再生出来ます。
  20. More Tools Menu…アドオンの導入などにより増えたツールメニューを、追加ツールという項目に移動する事が出来ます。

  21. MR Tech Toolkit…互換性の無いアドオンを強制的に互換させたり、拡張機能やテーマを管理するツールを提供してくれるアドオン。
  22. NewsFox…ブラウザ上で使える3ペインのAtom/RSSフィードリーダー。
  23. Orbit Downloader Firefox Integration…「Orbit Downloader」をブラウザ上で使いやすくするアドオン。
  24. Organize Status Bar…ステータスバーの各種アイコンや情報表示を任意の順番に並べ替える事が出来ます。
  25. PDF Download…PDFファイルのリンクをクリックした際にダイアログで4つの処理の選択が可能になるアドオン。
  26. qtl lite…世界中のWebページを翻訳して読む事が出来るようになります。
  27. Resizeable Textarea…テキストエリアの大きさを変更する事が出来ます。
  28. Resurrect Pages…消失したWebページをキャッシュファイルを蓄えているサイトから探す事が出来るアドオン。
  29. ScribeFire…ブラウザ上でブログ記事の編集・投稿が出来ます。
  30. SearchBox Sync…Firefoxの「検索バー」を検索エンジンと同期させます。

  31. SearchWP…検索した単語をページ内から容易に探し出す事が出来る機能が提供しているアドオン。
  32. SEO For Firefox…SEO対策が容易に出来る機能を提供しているアドオン。
  33. Smart Middle Click…JavaScriptで記述されたリンクをセンタークリックで新規タブに開く事が出来ます。
  34. Statusable…ステータスバーをもう一段増やす事が出来ます。
  35. Tab Mix Plus…タブ機能を拡張するための様々な機能を提供しているアドオン。
  36. User Agent Switcher…User Agent(Webにアクセスするためのソフトウェアやハードウェア)を偽装する事が出来ます。
  37. userChromejs…JavaScriptによって拡張が可能な「userChrome」が利用可能になります。
  38. Web Developer…Web開発にあったら便利な様々なツールを統合して機能を提供しているアドオン。
  39. XUL/Migemo…「kouka」が「高価」や「効果」になるように、ローマ字で検索しても自動で日本語の該当のページを検索する事が出来ます。
  40. セカンドサーチ…検索バーから検索する際に今現在表示されている検索エンジンとは別の検索エンジンでもダイレクトで検索出来るようになります。

  41. ソース表示タブ…ページのソースをタブで表示出来ます。
  42. テキストリンク…Webページに書かれたURI文字列(h抜けも可)を、ダブルクリックするだけで読み込む事が出来ます。

userChrome.js

  1. MouseGestures2.uc.js…軽量なマウスジェスチャです。
  2. CopyUrlLitePlus.uc.js…webページのtitle要素やURIなどをクリップボードにコピーする事が出来ます。
  3. addRestartButton.uc.js…メニューに再起動コマンドが追加されます。
  4. VerticalToolbar.uc.js…サイドバーに縦置きツールバーを追加する事が出来ます。


できるポケット+ Firefox Mozilla Firefox 3対応
できるポケット+ Firefox Mozilla Firefox 3対応小林 祐一郎

インプレスジャパン 2008-07-25
売り上げランキング : 90311

おすすめ平均 star
starかなり使える
star初心者こそ
starIEから乗り換えるために読みました

Amazonで詳しく見る
by G-Tools


「一足早く「Plagger」の便利さを実感してみよう」という記事のコードでエラーが出た点

posted in 01:56 2009年06月25日 by 涼微
Comments(2) TrackBack(1)   WEB・インターネット  コンピュータ このBlogのトップへ 前の記事 次の記事
三週間ぐらい前に私はかなり遅まきながらPlaggerを初めて触ってみました。その際にまず手始めのサンプルとして「Plagger」とGoogleで検索すると一番上に出てくる「一足早く「Plagger」の便利さを実感してみよう」という記事の4ページ目に書いてあるコードを実行しようとした際につまずいた点が3点あったのでその事について忘れない内に書いておこうと思います。

1,YAMLのインデント

まず一点目はYAMLはインデント(字下げ)に厳しいので当該のページにあるコードをそのままコピペしてもエラーになってしまう点です。

だからコードでは、
plugins:
- module: Subscription::Bloglines
config:
username: atmarkhogehoge@gmail.com
password: hogehoge
mark_read: 0
fetch_meta: 1

- module: Widget::BloglinesSubscription

- module: Publish::Gmail
config:
mailto:atmarkhogehoge@gmail.com
mailfrom: atmarkhogehoge@gmail.com
mailroute:
via: smtp_tls
host: smtp.gmail.com:587
username: atmarkhogehoge@gmail.com
password: hogehoge

となっているのを
plugins:
- module: Subscription::Bloglines
config:
username: atmarkhogehoge@gmail.comhttp://twitter.com/
password: hogehoge
mark_read: 0
fetch_meta: 1

- module: Widget::BloglinesSubscription

- module: Publish::Gmail
config:
mailto:atmarkhogehoge@gmail.com
mailfrom: atmarkhogehoge@gmail.com
mailroute:
via: smtp_tls
host: smtp.gmail.com:587
username: atmarkhogehoge@gmail.com
password: hogehoge

というようにモジュール「Publish::Gmail」以下の部分の「config:」から下を一つずつ字下げして階層を作る必要がありました。

2,MIME::Liteのバージョンの相違

(*どうやら開発版で修正済みの模様(コメント欄参照)。寧ろこのエラーが出る場合は他にも修正済みで無いエラーが出る可能性があるので、リンク先のバージョンを取得する事を推奨します。)

二点目は、MIME::Liteのバージョンが上がり、「MIME::Lite::extract_addrs」から「MIME::Lite::extract_full_addrs」に名称が変更されてしまっているので、実行すると
Plagger::Plugin::Publish::Gmail [error] Error while sending emails: 
Undefined subroutine &MIME::Lite::extract_addrs called
at C:/Perl/site/lib/Plagger/Plugin/Publish/Gmail.pm line 217.

というエラーが出て「Plagger::Plugin::Publish::Gmail」が動かなくなるという点です。

これを解消するには、「C:/Perl/site/lib/Plagger/Plugin/Publish」にある「Gmail.pm」の217行目と224行目に記載してある「extract_addrs」を「extract_full_addrs」に変更すれば良いです。

3,OpenSSLのダウンロード

そして、三点目は「序数〜(四桁の数字)がダイナミック ライブラリ LIBEAY32.dllから見つかりませんでした」という警告が出るというエラーです。この場合は例えばこのサイトからOpenSSLをダウンロードして新しいバージョンにする必要が有ります。

ただし、LIBEAY32.dllというダイナミックリンクライブラリは色んなソフトに汎用的に使われているので、新しいバージョンをインストールすると他のソフトに不具合が生じる場合があるのでその場合は自己責任でお願いします。

私の環境(Windows XP)の場合は上記三つのエラーでしたが、環境や入れているソフトによっては他にもエラーが出てくるかもしれないです。しかし、その時は私はまだそこまでPlaggerに詳しくないので他を当たってくれるようにお願いしたいと思います。

さすが!と言わせる Plagger徹底攻略術
さすが!と言わせる Plagger徹底攻略術蒲生 睦男

シーアンドアール研究所 2009-01-23
売り上げランキング : 136563


Amazonで詳しく見る
by G-Tools


抽象的な事柄を検索していたらよく当たるページと最近読んで面白かったブログ(今更感あり)

posted in 21:04 2009年06月15日 by 涼微
Comments(0) TrackBack(0)   WEB・インターネット  このBlogのトップへ 前の記事 次の記事
抽象的な事柄を検索していたらよく当たるページ


幸せ(しあわせ/幸福)のホームページ
過去の偉人の格言が載っていたり、ポジティブに生きる考え方やヒントが多数載っている。あまり把握できていないけれど恐らくページ数も相当のものか!?

最近読んで面白かったブログ(今更感あり)


ぼくはまちちゃん!
物事を見る視点が人と違っていて面白いよ!さすがクラッカー的な事が得意なだけあるなぁ…それと、口調も特徴的だから続けて読んでいたらうつる可能性があるよ!

ドクター苫米地ブログ − Dr. Hideto Tomabechi Official Weblog

何やら肩書きが凄い所に目がいくけれどもそれにしても色んな本を出している(参考:Amazon)。しかし、どうもレビューを読む限りでは当たり外れが大きそう。ただし当たりのほうの意見は意見が鋭くかなり面白いと思います。また、このブログではとにかく匿名性を嫌っているので要注意。


サイト内検索
トラックワード
あわせて読みたい


フィギュア動画