F.Ko-Jiの「一秒後は未来」

個別エントリーにAmazon商品リンクを表示

ブログでPHPを使えるようにしたので色々やってます。今日はブログの個別エントリーにAmazon Web サービスを使って、エントリーに関連する商品を表示させてしまおうと企てました。最もWeb2.0っぽくするなら、文章からキーワード抽出して、そのキーワードをAmazonに投げるっていう形式になるんでしょうけど、そんな技術は無いのでもう少し簡単に実現できる方法を考えました。方法はブログのエントリーに、

<?php $CATEGORY=”Books”; $KEYWORDS=”プログラミング”; ?>

という風に検索対象にするカテゴリと検索キーワードを記述しておいて、この変数をPHPプログラムで利用するというものです。プログラムのほうでは、Amazonにキーワードを投げて検索結果の商品をXMLで10件受け取り、その10件の中からランダムに表示させます。

さて、Amazonとデータをやり取りするプログラムですが、最初はAmazon Web サービスのサンプルについていたSOAP形式のプログラムを利用してみました。しかし、レスポンスに5秒程度時間がかかってしまってその間ページの表示が止まってしまうという問題があったので、REST形式を使うことにしてみました。参考にしたサイトは、Amazon ECS 4.0 解説1 RESTリクエストのパラメータです。RESTのHTTPリクエストにつけるパラメータは、このサイトの説明に従いました。

リクエストの結果はXMLで返ってくるので、それをパースするものが必要です。ロリポップのPHPはPHP4なのでSimpleXMLは使えそうになく、色々調べてDOMXMLを使ってみました。参考にしたサイトは「Do You PHP? – PHP4.3.0でのDOM XML」です。DOMXMLに与えるXMLは外部サイトでも大丈夫なので、Amazon ECS 4.0のRESTのHTTPリクエストをそのまま与えればOK。それでもなかなかうまくパースできなかったのですが、なんとか商品ページURL、画像URL、商品名を取得できるようにしました。

同じキーワードでも、将来Amazonに新しい商品が追加されればそれに応じてブログに表示される商品も新しいものが追加されるのがいいですね。Web2.0までは行かなくても、Web1.5くらいの仕組みかなと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など