我正在用php和curl创建web抓取。我看,如果http响应的状态代码是3xx,curl仍然下载正文内容。如果正文内容很小,我认为这没有问题,但在我的情况下,有3xx的页面和巨大的正文内容。我只想立即重定向,如果它得到3xx而没有得到正文内容。如何做到这一点?
首先,您需要告诉它只有小于4xx的状态才是好的。
$handle = curl_init();
curl_setopt($handle, CURLOPT_FAILONERROR, true);
CURLOPT_FAILONERROR
TRUE表示如果返回的HTTP代码为大于或等于400。默认行为是返回页面正常,忽略代码。
其次,对于3xx错误,您需要遵循重定向。参见CURLOPT_FOLLOWLOCATION
和CURLOPT_MAXREDIRS
。