0

我目前有一个限制问题,即每个 Curl 请求我得到 1000 个结果,这里的问题是我需要得到大约 7000 个结果。

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 url 获取结果/数据,直到页面底部不再有 next_page url。

关于 json 布局的更多细节:

json 键是“next_page”和“end_time”:

"end_time": ("unix-timestamp") 
"next_page": "https:url/"unix-timestamp" 

在每一页之后都有一个新的时间戳,它将在键“end_time”中列出。

然后,这将列在“next_page”网址的末尾。这两个键都是 json 代码中的最后两行,json 文件中总共有大约 20'000 行数据。

如果需要更多详细信息,请告诉我,提前谢谢。

4

1 回答 1

0

在不知道 json 布局的情况下。网址有多深,密钥是什么等

就像是。

function getNext($jsonIn){
    if (!empty($jsonIn['url'])) {
        curlWrap($jsonIn['url'], $json, $action);
    }  
}

//-------------

getNext($decoded);
于 2013-05-06T22:46:12.783 回答