AmazonAPIでテキストファイルの商品を自動検索する方法(PHP)

概要

テキストファイルから検索する商品を自動取得

AmazonAPIへのパラメータとして自動検索

サンプル

※例:~\search.txt
PHP
Amazon
Oracle

‘;
$index++;;
}
?>



$v) {
$base_request .= “&” . $k . “=” . $v;
}
$base_request = $baseurl . “?” . substr($base_request, 1);
/* 1.タイムスタンプを付ける */
$params[“Timestamp”] = gmdate(“Y-m-d\TH:i:s\Z”);
$base_request .= “&Timestamp=” . $params[‘Timestamp’];
$base_request = “”;
foreach ($params as $k => $v) {
$base_request .= ‘&’ . $k . ‘=’ . rawurlencode($v);
$params[$k] = rawurlencode($v);
}
$base_request = $baseurl . “?” . substr($base_request, 1);
$base_request = preg_replace(“/.*\?/”, “”, $base_request);
$base_request = str_replace(“&”, “\n”, $base_request);
ksort($params);
$base_request = “”;
foreach ($params as $k => $v) {
$base_request .= “&” . $k . “=” . $v;
}
$base_request = substr($base_request, 1);
$base_request = str_replace(“&”, “\n”, $base_request);
$base_request = str_replace(“\n”, “&”, $base_request);
$parsed_url = parse_url($baseurl);
$base_request = “GET\n” . $parsed_url[‘host’] . “\n” . $parsed_url[‘path’] . “\n” . $base_request;
$signature = base64_encode(hash_hmac(‘sha256’, $base_request, Secret_Access_Key, true));
$signature = rawurlencode($signature);
$base_request = “”;
foreach ($params as $k => $v) {
$base_request .= “&” . $k . “=” . $v;
}
$base_request = $baseurl . “?” . substr($base_request, 1) . “&Signature=” . $signature;
echo “検索” . $index . “:結果”;
$loopCnt=0; //Loop集計用
$amazon_xml=simplexml_load_string(@file_get_contents($base_request));
foreach((object)$amazon_xml->Items->Item as $item_a=>$item){
$title=$item->ItemAttributes->Title; //商品名
$newprice=$item->ItemAttributes->ListPrice->FormattedPrice; //New価格
$oldprice=$item->OfferSummary->LowestUsedPrice->FormattedPrice; //Old価格
$detail=$item->DetailPageURL; //商品のURL
$image=$item->MediumImage->URL; //画像のURL
print ‘

‘.$title.”
. ” . ‘新品価格:’ . $newprice
. ‘‘ . ‘中古価格:’ . $oldprice
. ‘

‘;
print ‘

‘;
unset($item);
// Loop抜け
$loopCnt+=1;
if($loopCnt==2){
echo “

“;
break;
};
}
}
?>

コード

※例:~\search.txt
PHP
Amazon
Oracle

<?php
  $mypath = “~/search.txt”;
  if (file_exists($mypath)){
    $load = file($mypath);
  }else{
    echo “ファイルがありません。<br/><br/>”;
    $load[0] = “XXXXXXX”;
  }
?>
<form name=”myForm” action=”#” method=”POST”>
  <?php
    $index = 1;
    // 読み込んだテキストを全行Loop
    foreach($load as $elm)
    {
      // 各行をテキストボックスに表示
      echo '検索'. $index
        . ':<input type=”text” name=”box”' . $index
        .' value=”' . $elm . '” /><br/>';
      $index++;;
    }
  ?>
  <br/>
  <input type=”submit” value=”検索” /><br/><br/>
</form>
<?php
  $index = 1;
  // 読み込んだテキストを全行Loop
  foreach($load as $elm)
  {
    // 各行を「商品検索&表示処理」へ渡す
    getprice($index, “Books”, $elm);
    $index++;;
    // 検索指示が速すぎると失敗する(気がする)ので1秒待機
    sleep(1);
  }
  
  // 商品検索&表示処理 を定義
  function getprice($index, $searchIndex, $keywords)
  {
    // Amazonへのリクエスト作成
    「AmazonAPIで商品を自動検索する方法(PHP)」参照
    
    echo “検索” . $index . “:結果<br/>”;
    
    //Loop集計用
    $loopCnt=0;
    
    // 取得したXMLデータから価格データの抽出&表示
    「AmazonAPIで中古商品を自動検索する方法(PHP)/中古品価格の表示」参照
    
    
    // 商品を2つ表示するとLoopを抜ける
    $loopCnt+=1;
    if($loopCnt==2){
    echo “<br/><br/><br/><br/><br/>”;
      break;
    };
  }
?>