Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取Amazon产品API上的所有项目_Php_Amazon Web Services_Amazon Product Api - Fatal编程技术网

Php 获取Amazon产品API上的所有项目

Php 获取Amazon产品API上的所有项目,php,amazon-web-services,amazon-product-api,Php,Amazon Web Services,Amazon Product Api,亚马逊的产品API限制我们每页只能获取10个项目,并且在特定查询中只能获取10个页面 我开发了一个几乎可以得到所有物品的代码; 首先,我提供了一个如下所示的参数: $item_params = [ "Service" => "AWSECommerceService", "Operation" => "ItemSearch", "AWSAccessKeyId" => env('AWS_ACCES

亚马逊的产品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"
        ];
然后,代码将通过指定项目的最大和最小价格来限制搜索,从而获得该浏览节点(类别)下的所有项目,按价格排序(desc)

伪代码(原始代码太长)

}

但是,我遇到了这种情况:

请求输出示例(假设所有项目都来自amazon):

其中,从n到n+120的乘积相等。这将为我的
getProducts
函数创建一个无限循环。我怎样才能避免这种情况?知道每个请求只返回10个项目,并且只有10页

我怎样才能避免这种情况

我认为你不能仅仅使用价格。您必须使用其他关键字将搜索划分为多个子搜索。例如,如果您正在搜索“笔记本电脑”,则应在“笔记本电脑华硕”、“笔记本电脑戴尔”等网站上搜索

您还可以根据浏览节点ID进行筛选,因此,如果结果来自多个浏览节点,则可以执行两个或更多搜索

我怎样才能避免这种情况

我认为你不能仅仅使用价格。您必须使用其他关键字将搜索划分为多个子搜索。例如,如果您正在搜索“笔记本电脑”,则应在“笔记本电脑华硕”、“笔记本电脑戴尔”等网站上搜索


您还可以根据浏览节点ID进行筛选,因此,如果结果来自多个浏览节点,则可以执行两个或更多搜索

添加ItemPage参数并在循环中递增它。你应该能够得到多达100个独特的ASIN(10页,每页10个产品)

$page=1;
而($page“AWSECommerceService”,
“操作”=>“项目搜索”,
“AWSAccessKeyId”=>env('AWS\u ACCESS\u KEY\u ID'),
“AssociateTag”=>env('AWS\u Associatet\u TAG\u ID'),
“搜索索引”=>“家庭花园”,
“ResponseGroup”=>“ItemAttributes、SalesRank、Offers”,
“排序”=>“-价格”,
“BrowseNode”=>$item_参数['BrowseNode'],
“MaximumPrice”=>$max_价格,
“最低价格”=>“0”,
“ItemPage”=>$page
];
//执行查询并保存数据
//递增页码
$page++;
}

添加ItemPage参数并在循环中递增。您最多可以获得100个独特的ASIN(10页,每页10个产品)

$page=1;
而($page“AWSECommerceService”,
“操作”=>“项目搜索”,
“AWSAccessKeyId”=>env('AWS\u ACCESS\u KEY\u ID'),
“AssociateTag”=>env('AWS\u Associatet\u TAG\u ID'),
“搜索索引”=>“家庭花园”,
“ResponseGroup”=>“ItemAttributes、SalesRank、Offers”,
“排序”=>“-价格”,
“BrowseNode”=>$item_参数['BrowseNode'],
“MaximumPrice”=>$max_价格,
“最低价格”=>“0”,
“ItemPage”=>$page
];
//执行查询并保存数据
//递增页码
$page++;
}
API的必需属性不是“关键字”。如果将其留空,您将收到BrowseNode中的所有项目-一次10个项目。因此,您不需要将“laptop”、“laptop asus”、“laptop dell”等关键字放入“关键字”不是API的必需属性。如果将其留空,您将收到BrowseNode中的所有项目-一次10个项目。因此,您不需要输入诸如“laptop”、“laptop asus”、“laptop dell”等关键字
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 
 $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++;
   }