【问题标题】:Getting all items on Amazon Product API获取亚马逊产品 API 上的所有商品
【发布时间】:2016-02-12 01:28:01
【问题描述】:

亚马逊的产品 API 限制我们每页只能获取 10 个商品,并且在某个查询中只能获取 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"
        ];

然后,代码将获取该浏览节点(类别)下的所有商品,SORTED BY PRICE (desc) 还通过指定商品的MAX 和 MIN Price限制搜索。

伪代码(原代码太长)

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);
    }

}

但是我遇到了这种情况:

请求输出示例(假设所有商品来自亚马逊):

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 个页面。

【问题讨论】:

    标签: php amazon-web-services amazon-product-api


    【解决方案1】:

    我怎样才能避免这种情况?

    我认为你不能只使用价格。您必须使用其他关键字将搜索划分为多个子搜索。例如,如果您要搜索“笔记本电脑”,请改为搜索“笔记本电脑华硕”、“笔记本电脑戴尔”等。

    您还可以过滤浏览节点 ID,因此如果您的结果来自多个浏览节点,您可以进行两次或多次搜索。

    【讨论】:

    • “关键字”不是 API 的必需属性。如果您将其留空,您将收到 BrowseNode 中的所有项目 - 一次 10 个项目。因此,您不需要输入“笔记本电脑”、“笔记本电脑华硕”、“笔记本电脑戴尔”等关键字
    【解决方案2】:

    添加 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++;
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多