【问题标题】:PHP cURL get last page numberPHP cURL 获取最后页码
【发布时间】:2022-11-19 17:29:15
【问题描述】:

我正在使用 cURL (simple_html_dom.php) 做 php 解析器。 我必须在这里解析新闻帖子:https://www.sport-express.ru/football/reviews/page2/ 这是第二页。我需要以编程方式获取最后一页(它将是 50)。 没有分页 - 只有延迟加载按钮。 如何使用 cURL 获取最后页码? 谢谢!

PS:如果您还显示如何在分页时获取最后页码,那就太好了。

【问题讨论】:

  • 您单击以加载更多内容的链接位于 <div class="se-material-list-page__nav" data-component="nav" data-prop-page="3" data-prop-max-page="50"> 内 - 因此您可以从那里获取您的“50”。
  • 谢谢,CBroe。当有分页时如何获取最后页码?
  • 识别包含分页链接的元素,然后从中获取最后一项。 (细节可能会有所不同,具体取决于目标站点实际使用的分页结构。)

标签: php curl


【解决方案1】:

一种可能的解决方案是遍历所有页面,直到出现错误 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++;
    }
}

【讨论】:

  • 这是我最初的想法。但由于页面加载时间慢(≈2 秒),它非常慢。所以我想尝试第 40 页,如果有效,则尝试第 50 页。如果无效,请尝试第 30 页。如果有效,请尝试第 60 页。依此类推。我想我是说我喜欢你的回答。然后我发现了`data-prop-max-page=`。这使它变得简单而且不太慢。尽管我发现 2 秒的页面加载时间是不可接受的。好工作。
【解决方案2】:

尝试这个:

$data = file_get_contents('https://www.sport-express.ru/football/reviews/page1/'); 
$start = strpos($data,'data-prop-max-page="') + 20;
echo "start=$start
";
$end = strpos($data,'>',$start) - 1;
$lastpage = substr($data,$start,$end-$start);
echo "last page = $lastpage 
$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 位置之后的 &gt; 的位置(第三个 strpos 参数)。 然后得到今天是50的子字符串。

以下是找到的值:

start=339441
end=339442
last page = 50 

PS:如果您还显示我如何获得最后页码,那就太好了 什么时候会有分页。

那天到来时回复我的答案。我的通灵能力不是那么敏锐。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多