You need to enable JavaScript to run this app. Python从HTML中提取最大页码 运行仅返回当前页问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Python从HTML中提取最大页码 运行仅返回当前页问题排查

问题原因及解决方案

核心问题点

  • 你选择的CSS类pg _act是当前激活页的专属样式,只有你正在访问的那一页的页码标签会携带该类,因此每次只能采集到当前页的页码:访问第一页时返回1,访问第48页时返回48,根本无法获取全量页码列表。
  • 你采集到的页码默认是字符串格式,直接调用max()方法会按ASCII字符顺序比较,而非数字大小比较,例如字符串'10'会被判定为小于'2',即便拿到全量页码也会得到错误结果。

修复方案

首先修改标签筛选规则,选择所有带pg类的页码标签,不要添加_act的激活状态限制;其次将取到的页码文本转成整数类型再存入列表,最后取最大值。

修正后代码如下:

def getLastPageNumber(soup):
    number = []
    # 筛选所有页码标签,不限制激活状态
    for item in soup.find_all("a", class_="pg"):
        page_text = item.text.strip()
        # 过滤非数字的特殊标签(比如首页、尾页的箭头按钮)
        if page_text.isdigit():
            number.append(int(page_text))
    # 兼容无页码的场景默认返回1
    return max(number) if number else 1

如果需要更高的适配性,还可以通过标签的aria-label属性提取页码,避免部分场景下页码文本不规范的问题:

import re
def getLastPageNumber(soup):
    number = []
    # 匹配aria-label里的页码规则
    page_pattern = re.compile(r'Page (\d+)')
    for item in soup.find_all("a", class_="pg"):
        aria_label = item.get('aria-label', '')
        match = page_pattern.search(aria_label)
        if match:
            number.append(int(match.group(1)))
    return max(number) if number else 1

内容的提问来源于stack exchange,提问作者Abimbola Ojikutu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 11:06:02