PHP Curl api发布请求仅返回25个结果,而可能还会更多

大卫

我想从网站上抓取一些有用的数据。但请求仅返回25个结果

有了这个:

    $url = 'https://api.test.org';
    $ch = curl_init();

    $jsonData = array(
        'limit' => 100, //user inputs pages * 5
        'listType' => 'taskSolutions',
        'task' => $taskid //taken from input user substr($_POST['link'],28);
        //'skip' => 25 $variable that increases by 25
    ); 

    curl_setopt($ch, CURLOPT_URL, $url);
    $jsonDataEncoded = json_encode($jsonData);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded); // loop adding 25 each time to skip
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch),true);

现在,我查看了该网站,它们具有参数“ skip”以获取更多结果。

但是现在的问题是:

我该如何做一个循环,将25加到跳过$ variable并重新发送CURLOPT_POSTFIELDS并将该数据添加到$ data

变量$ totalcount可用于检查有多少记录。

哈桑

您可以循环执行此操作。例如,将上面的代码放入名为getData的函数中,并向其传递两个参数$ skip和$ taskId:

function getData($skip, $taskid)
{
    $url = 'https://api.test.org';
    $ch = curl_init();

    $jsonData = array(
        'limit' => 100, //user inputs pages * 5
        'listType' => 'taskSolutions',
        'task' => $taskid //taken from input user substr($_POST['link'],28);
        'skip' => $skip
    );

    curl_setopt($ch, CURLOPT_URL, $url);
    $jsonDataEncoded = json_encode($jsonData);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded); // loop adding 25 each time to skip
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    return json_decode(curl_exec($ch),true);
}

然后,您可以编写一个循环以将$ skip变量增加25,直到达到$ totalCount。在每次迭代中,将返回的元素添加到$ data数组中:

$data = [];
for($skip = 0; $skip < $totalCount; $skip += 25)
{
    foreach(getData($skip, $taskid) as $entry)
    {
        $data[] = $entry;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章