Получение всех элементов в API продуктов Amazon

API продуктов Amazon ограничивает нас в получении только 10 элементов на страницу и только 10 страниц по определенному запросу.

Я разработал код, который бы почти получал все элементы;
во-первых, я предоставил params, который выглядит следующим образом:

    $item_params = [
"Service" => "AWSECommerceService",
"Operation" => "ItemSearch",
"AWSAccessKeyId"    => env('AWS_ACCESS_KEY_ID'),
"AssociateTag"      => env('AWS_ASSOCIATE_TAG_ID'),
"SearchIndex" => "HomeGarden",
"ResponseGroup" => "ItemAttributes,SalesRank,Offers",
"Sort" => "-price",
"BrowseNode" => $item_params['BrowseNode'],
"MaximumPrice" => $max_price,
"MinimumPrice" => "0"];

затем код получит все элементы в этом узле просмотра (категории), Сортировка по цене (desc) также, указав Максимальная и минимальная цена из предметов, чтобы ограничить поиск.

псевдокод (исходный код слишком длинный)

function getProducts($item_params, $max_price = null){

$products = //request to amazon
foreach ($product as $key=>$value){
//add product to db
}

// if the total number of results on the query is not equal to zero, continue looping
if (!$products->totalResults() == 0){
$product = //get the first lowest priced item on the db

$this->getProducts($item_params, $product->price);
}

}

Однако я испытываю этот сценарий:

Пример запроса запроса (при условии, что все элементы из amazon):

ASIN(unique id) | Price

1     |  201
2     |  194
3     |  195
.
.
n     | 33
n+1   | 33
n+2   | 33
.
n+120 | 33
n+121 | 34
n+122 | 35

где продукты от n до n + 120 равны. Это создаст бесконечный цикл для моего getProducts функция. Как я могу избежать этого? Зная, что по каждому запросу возвращается только 10 товаров и только 10 страниц.

1

Решение

Как я могу избежать этого?

Я не думаю, что вы можете просто использовать цену. Вы должны разделить свой поиск на несколько вложенных поисков, используя дополнительные ключевые слова. Например, если вы ищете «ноутбук», вместо этого выполните поиск по «ноутбук Asus», «ноутбук Dell» и т. Д.

Вы также можете отфильтровать по идентификаторам узла просмотра, поэтому, если ваши результаты получены с нескольких узлов просмотра, вы можете выполнить два или более поиска.

0

Другие решения

Добавьте параметр ItemPage и увеличьте его в цикле. Вы должны иметь возможность получить до 100 уникальных ASIN (10 страниц по 10 продуктов на страницу).

 $page = 1;
while($page <= 10) {
$item_params = [
"Service" => "AWSECommerceService",
"Operation" => "ItemSearch",
"AWSAccessKeyId"    => env('AWS_ACCESS_KEY_ID'),
"AssociateTag"      => env('AWS_ASSOCIATE_TAG_ID'),
"SearchIndex" => "HomeGarden",
"ResponseGroup" => "ItemAttributes,SalesRank,Offers",
"Sort" => "-price",
"BrowseNode" => $item_params['BrowseNode'],
"MaximumPrice" => $max_price,
"MinimumPrice" => "0",
"ItemPage" => $page
];

// execute query and save data
//increment page number
$page++;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector