我正在尝试点击一个api,并使用返回的数据填充数据库表。我需要获取9000多行数据,每页只有100行数据。我正在设置循环,以控制我所在的页面,但仅返回前100条记录(第一页)。
我的代码目前仅抓取两页进行测试。
我正在使用PHP cURL完成此操作
for($pageLoop = 0; $pageLoop < 2; $pageLoop++){
$curl2 = curl_init();
curl_setopt_array($curl2, array(
CURLOPT_URL => "https://SOME_SERVER/rest/search/?api_key=MY_API_KEY&searchTerm=&pageNumber=".$pageLoop."&pageSize=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache"
),
));
$response2 = curl_exec($curl2);
$err2= curl_error($curl2);
if(!curl_exec($curl2)){
die('Error: "' . curl_error($curl2) . '" - Code: ' . curl_errno($curl2));
}
curl_close($curl2);
for($itemLoop = 0; $itemLoop < 100; $itemLoop++){
echo 'chpl product number yy: ' . $response['results'][$itemLoop]['chplProductNumber'] . '<br>';
}//END ITEM LOOP
}//END PAGE LOOP
预期结果是每一页的项目列表。截至今天共有97页,而我只有第一页。 谢谢
答案 0 :(得分:1)
我的猜测是,您正在调用第0页,该页不返回任何结果。因此,在第二次迭代中,您是第一次调用第1页。
因此,仅获得首页结果。
尝试一下:
$pageLoop = 1;
do {
$cl = curl_init();
curl_setopt_array($cl, array(
CURLOPT_URL => "https://SOME_SERVER/rest/search/?api_key=MY_API_KEY&searchTerm=&pageNumber=".$pageLoop."&pageSize=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache"
),
));
$response = curl_exec($cl);
curl_close($cl);
for($itemLoop = 0; $itemLoop < 100; $itemLoop++)
echo 'chpl product number yy: ' . $response['results'][$itemLoop]['chplProductNumber'] . '<br>';
$pageLoop++;
} while ($pageLoop <= 2);
此外,我注意到一些完全未使用的变量名。例如$err2
和$response2
。我的最新编辑对此做了一些整理。