【问题标题】:cUrl Amazon Product卷曲亚马逊产品
【发布时间】:2021-02-07 23:06:20
【问题描述】:

我正在尝试通过网址抓取亚马逊产品。我用 file_get_contents 尝试过,它在 localhost 上运行良好。现在我把它上传到我的服务器上,我总是从亚马逊那里得到一个验证码,上面写着“带有 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);
}

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

【问题讨论】:

  • 亚马逊显然正在防御您正在尝试做的事情。他们可能更擅长防守而不是进攻。
  • @TangentiallyPerpendicular 是否有另一种爬取亚马逊产品的可能性?也许使用 api?

标签: php curl amazon


【解决方案1】:

虽然抓取在美国是合法的,但最好使用可用的 API。亚马逊检测并阻止刮板。 Amazon product advertising API 的问题在于,先决条件是 Amazon Associates 帐户,这是联属网络营销计划,需要您推动对产品的销售......所以这并不可行。过去不存在使用他们的 API 的要求。

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

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

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

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 2017-08-11
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多