PHP cURL获取最后一个页码

xmd2e60i  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(131)

我正在使用cURL(simple_html_dom.php)做php解析器。我必须在这里解析新闻帖子:https://www.sport-express.ru/football/reviews/page2/这是第二页。我需要得到编程的最后一个页码(它将是50)。没有分页-只有惰性加载按钮。我如何才能得到最后一个页码使用cURL?谢谢!
PS:这将是伟大的,如果你也显示如何我可以得到最后一页的号码时,将分页。

iq0todco

iq0todco1#

一种可能的解决方案是遍历所有页面,直到出现错误404

$pageNumber = 1;
$url = "https://www.sport-express.ru/football/reviews/page{pageNumber}/?ajax=1";

$finished = false;
while($finished === false) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, str_replace($pageNumber, '{pageNumber}', $url));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode === 404) {
        $finished = true;
    } else {
        // Do something...
        $pageNumber++;
    }
}
ie3xauqp

ie3xauqp2#

试试看:

$data = file_get_contents('https://www.sport-express.ru/football/reviews/page1/'); 
$start = strpos($data,'data-prop-max-page="') + 20;
echo "start=$start\n";
$end = strpos($data,'>',$start) - 1;
$lastpage = substr($data,$start,$end-$start);
echo "last page = $lastpage \n$data";

这就是我们要找的:

<div class="se-material-list-page__nav" data-component="nav" data-prop-page="2" data-prop-max-page="50">

首先找到'data-prop-max-page='的位置
因为搜索字符串的长度为20个字符,所以添加20。
然后得到>的位置,紧接着$start位置(第三个strpos参数)。然后得到子字符串,今天是50。
以下是找到的值:

start=339441
end=339442
last page = 50

PS:这将是伟大的,如果你也显示如何我可以得到最后一页的号码时,将分页。
到那一天再回复我的答案吧,我的通灵能力没那么敏锐。

相关问题