Я новичок в CURL & Я пытаюсь извлечь данные из динамического URL. Я успешно получил данные только с 1 страницы, но мне нужно получить данные со всех страниц. Проблема здесь в том, что страницы являются переменными; Я не знаю, сколько раз код должен зацикливаться на всех страницах. то есть количество страниц варьируется от одного случая к другому, и хорошая программа — это та, которая работает в максимально возможном количестве случаев. Следовательно, размещение ссылок в массиве и их циклирование не является правильным решением для этого.
Вот краткое объяснение URL, с которого я пытаюсь получить данные:
https://link-search.api.cj.com/v2/link-search?website-id=[Your-ID]&link-type=banner
&advertiser-ids=1513033&records-per-page=100&page-number=' . $num
Вы заметили последнюю переменную $num
? Это должно представлять номер страницы, откуда будут получены данные. В некоторых случаях это может быть только 1, а в некоторых других случаях это может быть 10, 12 или 15 (варьируется) в зависимости от параметров, которые я выбираю, хочу ли я видеть все или фильтровать некоторую информацию.
Теперь вот проблема. Как динамически увеличивать это число, пока запрос возвращает данные? а если нет, то cURL должен перестать работать?
Вот код:
<?php
$num = 1;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "XGET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_ENCODING, "UTF-8");
curl_setopt($curl, CURLOPT_URL, 'https://link-search.api.cj.com/v2/link-search?website-id=[Your-ID]&link-type=banner&advertiser-ids=1513033&records-per-page=100&page-number=' . $num);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIE,true);
$result = curl_exec($curl);
$xml = simplexml_load_string($result) or die("Error: Cannot create object");
if (curl_errno($curl)) {
echo 'Error:' . curl_error($curl);
}
curl_close($curl);
?>
Вы можете определить свой запрос curl внутри функции и вызвать эту функцию следующим образом:
<?php
$GLOBALS['num'] = 1;
function curlRequest()
{
// HERE DEFINE YOUR CURL REQUEST
// https://yourUrl.com?$GLOBALS['num']
if (curl_errno($curl)) {
echo 'Error:' . curl_error($curl);
// Exit from function in case there is no output
return;
} else {
$GLOBALS['num']++;
// Call the function to fetch NEXT page
curlRequest();
}
}
// Call the function for first time
curlRequest();
Предполагая, что curl выдаст ошибку, если номер страницы не существует, или вы можете реализовать условие, полученное в результате, который вы получаете. Надеюсь, вы получите представление об этом.
Основная часть здесь, если & остальное. Вы должны реализовать, если условие на вывод, который вы получаете, и если страница не существует, вывод будет отличаться, так что вы можете просто вернуться из функции в этом случае.
Других решений пока нет …