AmazonのユーザレビューをISBNから取得する商品検索アプリの作成

PHP言語からAmazonのProduct Advertising APIを呼び出し、AmazonのユーザレビューをISBNから取得します。「AmazonのユーザレビューをISBNから取得する商品検索アプリの作成」で、Python言語によりAmazonのユーザレビューを取得しましたが、「Amazon APIを使って商品検索するサンプルコード」を参考にして、AmazonのユーザレビューをPHP言語で取得します。

「amazonbook.php」で次の処理を行います。

  • 3行目-7行目までで、Amazon APIのアクセスキーとシークレットキー、アソシエイトIDを定義します。
  • 16行目で、Amazon APIの仕様に沿ったリクエスト出力用のPHPスクリプトを呼び出して作成します。
  • 17行目で、商品レビューを作成する関数をインクルードします。
  • 21行目で、商品検索コマンドが受け付けられたかを判断します。Amazon APIは頻繁に発行することができません。
  • 24行目で、該当の商品検索が取得できたかを判断します。
  • 34行目で、商品レビューを取得します。

amazonbook.php

<?php
// Amazon APIのアクセスキー、シークレットキーを入力
define("Access_Key_ID", "xxxxxx");
define("Secret_Access_Key", "yyyyy");

// アソシエイトIDの入力
define("Associate_tag", "zzzzz");

$body = ItemSearch("Books", "4838729472");
print("<br>******************3 " . $body);

//Set up the operation in the request
function ItemSearch($SearchIndex, $Keywords) {

    // Amazon APIの仕様に沿ったリクエスト出力用のPHPスクリプト
    include("base_request.php");
    include("AmazonReview.php");

    $result = simplexml_load_string(file_get_contents($base_request));

    if (is_null($result->Items->TotalResults)) {
        return "アクセスが早すぎます";
    } else {
        if ($result->Items->TotalResults == 0) {
            return "リクエストに該当する結果がありません";
        } else {
            $body = "\n" . $result->Items->Item->ItemAttributes->Title . ' ' .
                    $result->Items->Item->ItemAttributes->Studio . ' 新品:' .
                    $result->Items->Item->OfferSummary->LowestNewPrice->FormattedPrice . ' 中古:' .
                    $result->Items->Item->OfferSummary->LowestUsedPrice->FormattedPrice . ' ASIN:' .
                    $result->Items->Item->ASIN;

            mb_language("Japanese");
            $webData = mb_convert_encoding(file_get_contents($result->Items->Item->CustomerReviews->IFrameURL), 'UTF-8', 'auto');
            getReview($webData, $review);

            preg_match('/"5つ星のうち(.*)" a/m', $webData, $hosi);
            $body = $body . " 星:5つ星のうち" . $hosi[1] . "\n";

            foreach ($review as $Review) {
                $body = $body . "**************" . "\n" . $Review . "\n";
            }

            return $body;
        }
    }
}
?>

「AmazonReview.php」で次の処理を行います。

  • 商品レビューがあれば「$review」に保存します。商品レビューは仕様上3つまでとなっています。

AmazonReview.php

<?php
// ファイルを書き込み専用でオープンします。
function getReview($webData, &$review) {
    $offset = 0;
    while (true) {
        $pos = strpos($webData, 'レビュー対象商品', $offset);
        if ($pos === false) {
            break;
        }
        $startPos = strpos($webData, '</div>', $pos + 1);
        $endPos = strpos($webData, '<div style=', $startPos + 1);
        $len = $endPos - $startPos + 1;
        $review[] = trim(strip_tags(substr($webData, $startPos, $len)));
        $offset = $endPos;
    }
}
?>

ブラウザから次のURLで商品検索アプリを実行します。

http://localhost/amazonbook/amazonbook.php

ブラウザに次の商品レビューが表示されます。

******************3 漫画 君たちはどう生きるか マガジンハウス 新品:¥ 948 中古:¥ 784 ASIN:4838729472 星:5つ星のうち 3.9 ************** 昔の本という理解が必要です。その当時の中学校は男性のエリートしかいない環境であるということを理解した上で読むことをお勧めします。 ************** キンドルペーパーとの相性も良く、大変読みやすい、電子書籍は又購入します ************** いろんな商品を見ましたが、この商品は問題なく使用しています。