Использование 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);