cURL PHP несколько запросов на динамический URL (Looping Unknown Times) - PullRequest
0 голосов
/ 01 января 2019

Я новичок в 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);

?>

1 Ответ

0 голосов
/ 01 января 2019

Вы можете определить свой запрос 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 вызовет ошибку, если номер страницы не существует, или вы можете реализовать, если условие из результата выполучение.Надеюсь, вы получите представление об этом.

Основная часть здесь - if & else.Вы должны реализовать, если условие на вывод, который вы получаете, и если страница не существует, вывод будет отличаться, так что вы можете просто вернуться из функции в этом случае.

...