AmazonAPIでテキストファイルの商品を自動検索する方法(PHP)
概要
テキストファイルから検索する商品を自動取得
↓
AmazonAPIへのパラメータとして自動検索
サンプル
※例:~\search.txt
PHP
Amazon
Oracle
“;
$load[0] = “XXXXXXX”;
}
?>
$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 ‘
. ‘
‘ . ‘新品価格:’ . $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;
};
}
?>