cUrl 亚马逊产品

时间:2021-02-07 23:06:20

标签: php curl amazon

我正在尝试通过网址抓取亚马逊产品。我用 file_get_contents 尝试过它,它在本地主机上运行良好。现在我将它上传到我的服务器,我总是收到来自亚马逊的验证码,说“带有 cookie 的浏览器效果更好”。我尝试使用 cUrl 启用 cookie,但我仍然收到此错误。 我试过了

private function getDataFromUrl(String $strUrl): String
{
    $ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_ENCODING => '', // Warning: if we don't say "Accept-Encoding: gzip", the SOB's at Amazon will send it gzip-compressed anyway.
        CURLOPT_URL => $strUrl
    ));
    return curl_exec($ch);
}

private function getDataFromUrl(String $strUrl): String
{
    /* STEP 1. let’s create a cookie file */
    $ckfile = tempnam (DIRECTORY."/includes/tmp", "CURLCOOKIE");
    /* STEP 2. visit the homepage to set the cookie properly */
    $ch = curl_init ($strUrl);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec ($ch);


    /* STEP 3. visit cookiepage.php */
    $ch = curl_init ($strUrl);
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    return curl_exec ($ch);
}

没有任何效果。你能给我提供一种我可以抓取亚马逊产品页面的方法吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

虽然抓取在美国是合法的,但最好在可用时使用 API。亚马逊检测并阻止抓取工具。 Amazon product advertising API 的问题在于先决条件是一个 Amazon Associates 帐户,它是联盟营销计划,需要您推动产品销售......所以它实际上并不可行。过去,使用他们的 API 不存在此要求。

首先,您需要设置标题和 cookie。但这仍然不可行。如果您快速向亚马逊发送请求,您会发现很快就会遇到 502 代码,因为来自您的 IP 的请求数量众多。

您真正需要做的是使用代理服务。存在几种,但它们都是付费服务。您为每个成功的请求付费。 Proxycrawl 就是一个例子。这将确保您获得页面的详细信息。

或者您可以使用 Keepa API。 Keepa 是一个浏览器小部件,可通过其用户抓取亚马逊。这里的缺点是数据可能不是实时的。一个项目越活跃,它被刮擦的频率就越高。您可以提取价格、优惠、评论、评分等。