【发布时间】: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?