Проблема С PHP API Поиска книг Amazon [закрыто]


Я использую следующий код для поиска книг в Amazon, и у меня есть 2 проблемы, упомянутые ниже: 1. Не удается получить 11-ю страницу, потому что на ней указано недопустимое значение для ItemPage 2. во время поиска я получаю некоторые книги, у которых нет номера ISBN, как от них избавиться? Мне нужны только те книги, у которых есть номер ISBN.

$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, который я могу использовать, потому что по этой ссылке говорится, что невозможно получить более 10 страниц http://docs.aws.amazon.com/AWSECommerceService/latest/DG/PagingThroughResults.html ? http://www.textbookrentals.com/search/php этот веб-сайт правильно обрабатывает поиск, и я хочу что-то подобное.Пожалуйста, предложите.

Спасибо Джая

Author: Jason C, 2013-10-29

1 answers

Это невозможно сделать. В соответствии с документацией на странице, на которую вы ссылаетесь http://docs.aws.amazon.com/AWSECommerceService/latest/DG/PagingThroughResults.html:

Итак, как вы получаете эту 973-ю страницу? Ты не можешь. Лучший подход заключается в том, чтобы отправить новый запрос, который является более целенаправленным и дает меньше элементов в ответе.

Причина, очевидно, в том, что Amazon не хочет использовать свои ресурсы для легкомысленных поисков, подобных этому, когда первые 10 страниц скорее всего, этого будет достаточно для пользователя, чтобы найти наиболее подходящий элемент, который он ищет.

На другой странице, на которую вы ссылаетесь, показаны результаты из внутренней базы данных, а НЕ из amazon, что проявляется в том факте, что, когда я нажимаю на товары, я получаю сравнения между магазинами для различных условий (новые, подержанные и т. Д.), А иногда amazon не отображается.

Я уже создавал подобный сайт раньше. Что я предлагаю вам сделать, так это сначала создать свою собственную базу данных элементов и не запускать поисковые запросы к Amazon на лету для получения результатов поиска , если только элемент еще не существует в вашей базе данных. Таким образом, вы можете создать свою базу данных с помощью своего пользователя и сократить объем ресурсов. Затем для будущих запросов к тому же поисковому запросу вам нужно будет выполнить запрос Amazon только при нажатии на элемент, чтобы получить актуальную информацию о доступности. Это будет быстрее и эффективнее.

 1
Author: zoltar, 2013-11-17 04:23:54