php多旋度问题

php多旋度问题,php,curl,Php,Curl,我想通过curl_exec获得几页,第一页是正常的,但是所有其他的-302页眉,什么原因 $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, ROOT_URL); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $content = curl_exec($curl); // here good content curl_close($curl); preg_match_all('/href="(

我想通过curl_exec获得几页,第一页是正常的,但是所有其他的-302页眉,什么原因

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ROOT_URL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($curl); // here good content
curl_close($curl);

preg_match_all('/href="(\/users\/[^"]+)"[^>]+>\s*/i', $content, $p);

for ($j=0; $j<count($p[1]); $j++){
    $new_curl = curl_init();
    curl_setopt($new_curl, CURLOPT_URL, NEW_URL.$p[1][$j]);
    curl_setopt($new_curl, CURLOPT_RETURNTRANSFER, 0);
    $content = curl_exec($new_curl); // here 302    
    curl_close($new_curl);

preg_match('/[^@]+@[^"]+/i', $content, $p2);
}


smth像这样

您可能希望提供一个代码示例,以便我们可以查看您是否遗漏了某些内容

302响应代码通常表示服务器正在将您重定向到位置响应标头中的其他位置。根据您使用的标志,CURL可以自动检索,也可以观察302响应并自己检索

下面是如何让CURL遵循重定向,其中$ch是CURL连接的句柄:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects 

您可以使用curl multi,它速度更快,可以并行地从所有url获取数据。 你可以这样使用它

//Initialize
$curlOptions = array(CURLOPT_RETURNTRANSFER => 1);//Add whatever u additionally want.
$curlHandl1 = curl_init($url1);
curl_setopt_array($curlHandl1, $curlOptions);

$curlHandl2 = curl_init($url2);
curl_setopt_array($curlHandl2, $curlOptions);

$multi = curl_multi_init();
curl_multi_add_handle($multi, $curlHandle1);
curl_multi_add_handle($multi, $curlHandle2);

//Run Handles
$running = null;
do {
  $status = curl_multi_exec($mh, $running);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($running && $status == CURLM_OK) {
  if (curl_multi_select($mh) != -1) {
    do {
      $status = curl_multi_exec($mh, $running);
    } while ($status == CURLM_CALL_MULTI_PERFORM);
  }
}

//Retrieve Results
$response1 = curl_multi_getcontent($curlHandle1);
$status1 = curl_getinfo($curlHandle1);

$response1 = curl_multi_getcontent($curlHandle1);
$status1 = curl_getinfo($curlHandle1);
你可以在这里找到更多信息
签出示例1

您可能还对CURLOPT_MAXREDIRS和CURLOPT_AUTOREFERERi感兴趣,如果我在脚本中进行一次curl_exec调用,则CURLOPT_AUTOREFERERi可以在不重定向的情况下获取页面内容,所以问题不在于重定向。也许这就是我想要解析限制的站点…@hippout:所以重定向中没有的问题-302/303是非常明确的。是的,可能是远程站点的限制。可能您不允许一次获取多个文档。只需让curl跟随重定向,然后查看此文档,其中包含一条错误消息。如果在浏览器中手动点击从preg_match_所有数据生成的URL,会发生什么情况?这些尝试也会被重定向吗?您是否已验证您构建的URL是否有效?