php - cURL PHP 对动态 URL 的多次请求(循环未知时间)
问题描述
我是 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 将触发错误,或者您可以根据获得的结果执行 if 条件。希望你能从中得到一些想法。
这里的主要部分是 if & else。你应该在你得到的输出上实现 if 条件,如果页面不存在,那么输出将会不同,所以在这种情况下你可以简单地从函数中返回。
推荐阅读
- reactjs - 基于反应管理中记录的字段/输入标签
- intellij-idea - IntelliJ 菜单栏没有响应
- jquery - 每次函数运行时,如何将文本从一个 div 移动到另一个?
- symfony-2.3 - Swiftmailer 电子邮件问题
- maven - maven依赖快照版本号与nexus快照版本号相差1秒
- python - ValueError:使用高斯分布函数进行归一化期间的比例 < 0
- javascript - 使用 fs 为 discord.js 制作灵活的文件路径阅读器?
- javascript - 生成用于渲染外部组件的 JSX
- javascript - 通过容器 div Id 获取 ag-grid 实例
- python - Pandas - 通过在另一个数据框中查找来替换值