2013-10-29 69 views
2

我使用以下代碼進行亞馬遜圖書搜索,我有兩個問題提及如下: 1.無法獲得第11頁,因爲它表示無效值爲ItemPage 2.在搜索時我正在買些沒有ISBN號的書,怎麼擺脫它們?我只想要那些有ISBN號的書。麻煩與亞馬遜圖書搜索API PHP

$time = time() + 10000; 
$method = 'GET'; 
$host = 'webservices.amazon.'.AWS_LANG; 
$uri = '/onca/xml'; 
$slug["Service"] = "AWSECommerceService"; 
$slug["Operation"] = "ItemSearch"; 
$slug["SubscriptionId"] = AWS_API_KEY; 
$slug["AssociateTag"] = AWS_ASSOCIATE_TAG; 
$slug["SearchIndex"] = CATEGORY; 
$slug["Condition"] = 'All'; 
$slug["Keywords"] = $query; 
$slug["ItemPage"] = 1; 
$slug["VariationPage"]=150; 
$slug["TruncateReviewsAt"] = '500'; 
$slug["ResponseGroup"] = 'Images,ItemAttributes'; 
$slug["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z",$time); 
$slug["Version"] = "2011-08-01"; 
ksort($slug); 
$query_slug = array(); 
foreach ($slug as $slugs=>$value) 
{ 
    $slugs = str_replace("%7E", "~", rawurlencode($slugs)); 
    $value = str_replace("%7E", "~", rawurlencode($value)); 
    $query_slug[] = $slugs."=".$value; 
} 
$query_slug = implode("&", $query_slug); 
$signinurl = $method."\n".$host."\n".$uri."\n".$query_slug; 
$signature = base64_encode(hash_hmac("sha256", $signinurl, AWS_API_SECRET_KEY, True)); 
// Get Amazon Signature API 
$signature = str_replace("%7E", "~", rawurlencode($signature)); 
$request = "http://".$host.$uri."?".$query_slug."&Signature=".$signature; 
$response = file_get_contents($request); 
$response = new SimpleXMLElement($response); 

有沒有我可以使用任何其他API,因爲這個環節說,這是不可能得到http://docs.aws.amazon.com/AWSECommerceService/latest/DG/PagingThroughResults.html超過10頁? http://www.textbookrentals.com/search/php這個網站正在處理搜索,我想要這樣的東西。請建議。

感謝 再也

回答

1

這不能做。根據您鏈接到的頁面上的文檔http://docs.aws.amazon.com/AWSECommerceService/latest/DG/PagingThroughResults.html

那麼,您如何獲得第973頁?你不能。更好的方法是提交更具針對性的新請求,並在響應中產生更少的項目。

原因很明顯,因爲亞馬遜不希望使用他們的資源進行這樣的無聊搜索,當前10個頁面最有可能足以讓用戶找到他們正在尋找的最相關的項目時。

你鏈接到的其他頁面顯示來自內部數據庫的結果,而不是亞馬遜,這是顯而易見的事實,當我點擊這些項目時,我可以比較商店之間的各種條件(新,舊等),有時亞馬遜沒有出現。

我之前建了一個這樣的網站。我建議你做的是先創建自己的物品數據庫,並且不要針對搜索結果運行搜索結果對亞馬遜運行搜索查詢,除非項目尚不存在於數據庫中。這樣您就可以憑藉用戶構建數據庫並減少資源浪費。然後,爲了將來對同一搜索查詢的請求,您只需在點擊該項目時運行亞馬遜查詢以獲取最新的可用性信息。這將會更快,更高效。

+0

感謝回覆zoltar :) –