我目前遇到一个限制问题,即每个Curl请求获得1000个结果,这里的问题是我需要获得大约7,000个结果。
从curl检索的数据采用Json格式,数据底部有一个链接,用于检索下一页数据,每页包含1000个结果。
是否可以执行数组或某种循环,我从每个页面获取所有数据,直到最后一页底部不再有next_page URL。
我尝试使用的代码示例是:
function curlWrap($url, $json, $action)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_URL, ZDURL.$url);
curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY);
switch($action){
case "POST":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
break;
case "GET":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
break;
case "PUT":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
default:
break;
}
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$output = curl_exec($ch);
curl_close($ch);
$decoded = json_decode($output);
return $decoded;
}
我只是想找到一种添加数组或循环的方法,以便继续从next_page网址获取结果/数据,直到页面底部没有更多的next_page网址。
关于json布局的更多细节:
json键是“next_page”& “end_time”:
"end_time": ("unix-timestamp")
"next_page": "https:url/"unix-timestamp"
在每个页面之后都有一个新的时间戳,它将在“end_time”键中列出。
然后,这将列在“next_page”网址的末尾。这两个键都是json代码中的最后两行,json文件中共有大约20'000行数据。
如果需要更多细节,请提前告知我们。
答案 0 :(得分:0)
不知道json布局。网址有多深,密钥是什么等等
等等。function getNext($jsonIn){
if (!empty($jsonIn['url'])) {
curlWrap($jsonIn['url'], $json, $action);
}
}
//-------------
getNext($decoded);