cURLPHP多次请求动态URL(循环未知时间)



我是cURL&我正在尝试从动态URL中检索数据。我只成功地从一个页面中检索了数据,但我想要的是从所有页面中检索数据。这里的问题是页面是可变的;我不知道代码应该在所有页面上循环多少次。即页面的数量因情况而异,并且一个好的程序是在尽可能多的情况下工作的程序。因此,将链接放在数组中并在其上循环不是解决此问题的正确方法。

以下是我试图从检索数据的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在页码不存在的情况下会引发错误,或者您可以从得到的结果中实现if条件。希望你能从中得到一些想法。

这里的主要部分是如果&其他的您应该在得到的输出上实现if条件,如果页面不存在,那么输出将不同,所以在这种情况下您可以简单地从函数返回

最新更新