Использование Json для получения данных из результатов:next_page

В настоящее время у меня есть проблема с ограничением, когда я получаю 1000 результатов на запрос Curl, проблема в том, что мне нужно получить около 7 тысяч результатов.

Данные, извлеченные из скручивания, представлены в формате Json, а внизу данных имеется ссылка для получения следующей страницы данных, каждая страница содержит 1000 результатов.

Можно ли сделать массив или что-то вроде цикла, где я получаю все данные с каждой страницы, пока в нижней части последней страницы не останется URL-адрес next_page?

Пример кода, который я пытаюсь использовать:

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;
}

Я просто хочу найти способ добавления массива или цикла, чтобы продолжать получать результаты / данные из URL-адреса next_page до тех пор, пока в нижней части страницы не будет больше URL-адреса next_page.

Немного подробнее о макете json:

Ключ json - это "next_page" и "end_time":

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

После каждой страницы появляется новая отметка времени, которая будет указана в ключе "end_time".

Это будет указано в конце URL-адреса "next_page". Оба эти ключа являются последними 2 строками в коде json, всего в файле json содержится около 20 000 строк данных.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, спасибо заранее.

1 ответ

Решение

Не зная макет JSON. насколько глубоко URL, какой ключ и т. д.

что-то вроде.

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

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

getNext($decoded);
Другие вопросы по тегам