個別エントリーにAmazon商品リンクを表示
ブログでPHPを使えるようにしたので色々やってます。今日はブログの個別エントリーにAmazon Web サービスを使って、エントリーに関連する商品を表示させてしまおうと企てました。最もWeb2.0っぽくするなら、文章からキーワード抽出して、そのキーワードをAmazonに投げるっていう形式になるんでしょうけど、そんな技術は無いのでもう少し簡単に実現できる方法を考えました。方法はブログのエントリーに、
という風に検索対象にするカテゴリと検索キーワードを記述しておいて、この変数を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くらいの仕組みかなと思います。
コメントを残す