我正试图从页面中抓取数据,试图在PHP中使用CURL。
问题是该网站有时负载很重,并给我一个“只是片刻...您的请求正在处理...”的用法,并且每5秒进行一次元刷新,直到服务器可用。这可能是多次刷新。
我尝试过添加
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
这没有用,因为它会多次刷新。
有没有办法让它等到没有更新刷新或确认它已经以某种方式到达下一页?
curl脚本是非常的
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
任何帮助表示赞赏。 如果这不能用卷曲做,你会建议另一种方法吗?
答案 0 :(得分:0)
您可以尝试以下内容:
<?php
$data= "" ;
$retries = 0;
while( preg_match('/<meta http-equiv="refresh"/im', $data) or $retries < 5){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
if(!preg_match('/<meta http-equiv="refresh"/im', $data))
{
break;
}
$retries++;
sleep(2);
}
?>
以上内容会尝试解析html
5次并在重试之间等待 2 秒,而html
不包含<meta http-equiv="refresh