要約:ニコニコ市場のように商品の購入数・クリック数情報を入れるスクリプトを書いてみました

最近は上の写真のように、ニコニコ動画の下の方にある市場の購入情報をアマゾンアソシエイトに導入したくて、ガリガリとコードを書いてました。思ったより手こずりましたよ‥。
ちなみにクリック数・購入数はAmazonのシステム上、1日毎しか更新されません。じゃ、早速ですがデモ。
仕組み(ざっくり)
手順としてはこんな感じ。試作版みたいなもんで実装は以下の通りダサいです、Give me a forked one。
現在はレポート取得もPHPで行っているので、もうちょっとスマートです。
- WWW::Mechanize(Perlモジュール)を使って、Amazonアソシエイトセントラルから注文レポートをXMLでダウンロード(スクレイピング)
- 上記を毎日cronで実行
- (1)で集めたXMLをPHPで処理
- SimpleXMLでXMLデータを読み込む
- いったん配列に組み込んでクリック数を集計
- 結果をSQLiteのDBに書き出す
- Amazon Linkageプラグインから上記処理をしているスクリプトを読み込む
- Amazon-Linkageプラグインが呼び出される毎にSQLiteのDBから該当する商品の情報を読み込んで表示する
仕組み(詳しく)
まず、処理がperlとPHPに分かれてることにツッコミが入ると思うのだけど、これは単純にPHPでAmazonアソシエイトセントラルの情報が入手できなかったからです。
PHPでスクレイピングする手法はいろいろと解説されているんですが(詳しくは文末のリンクを参照)、今回はsnoopyというスクレイピング用のクラスライブラリがあったので、それを使ったみたんですよ‥が、撃沈。何度フォームにアクセスしてもログイン画面でやり直せと言われちゃいます。PHPでやるのは無理なのかな‥。
それで、GORRYさんがperlを使って注文レポートを自動で受け取るスクリプトを公開されていたので、そちらを利用させていただくことにしました。
URLにアクセスする部分をデータを全取得できるよう以下のように改造しました1 。ちなみに、さくらのサーバーではWWW::Mechanizeが使えないようだったので、CoreServerで動かしてます。
これをcronで動かす際は、権限をきちんと設定するようにしてください。一例を挙げれば、スクリプトを格納するパスの属性は777、perlスクリプトを実行するシェルスクリプト2 の属性は755に設定しておいてください
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
my $date = sprintf("endMonth=%d&endDay=%d&endYear=%04d", $mon + 1, $mday, $year + 1900);
$url_base = "https://affiliate.amazon.co.jp/gp/associates/";
$url_af = "/network/reports/report.html/?ie=UTF8&reportType=ordersReport&periodType=exact&startMonth=1&startDay=1&startYear=2002&";
$url_start = $url_base . "/login/login.html";
$url_html = $url_base . $url_af . $date ."&reportLevel=verbose";
$url_xml = $url_base . $url_af . $date ."&submit.download_XML";こうしてXMLがダウンロードできたら、次はPHP側の処理に移ります。この辺はスクリプトを置いておくので、興味があったら眺めてください。
- ダウンロード
- アマゾン購入数・クリック数取得スクリプト
- ライセンス
- GNU GPL v2
で、Amazon-Linkageプラグインからこのスクリプトを経由して情報を取得するという寸法です。Pear::MSB2とか初めて触ったのでいささか疲れました。
著作権もあるのでまだプラグインのパッケージの中には組み込めませんが、著作者のGORRYさんに許可を頂いたら、パッケージに含めて配布していこうと思います。
参考リンク
スクレイピング一般
そのほか
- AmazonAssociateReportJP.pm
- ニコニコ動画にあるamazonの広告効果を「ニコニコ市場」にランキングとして表示していますが、あれはシステム的にどういった仕組みなのでしょうか? と言うのも各商品につ.. – 人力検索はてな
Popularity: 3% [?]
- キーワード:




読者のコメント
0件