You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python BeautifulSoup Select获取指定值?提取最后一页的'281'

用BeautifulSoup Select提取分页最后一页数值的解决方案

没问题,我来帮你搞定这个需求!根据你提供的HTML结构,这里有两种常见的实现方式,对应分页的两种常见布局:

情况1:最后一页的页码直接显示在列表末尾

如果分页的最后一个带数字的<a>标签就是最后一页(比如末尾有<span>281</span>),可以这样提取:

from bs4 import BeautifulSoup

# 假设你已经获取到了目标页面的HTML内容
html = '''<div class="page2"><a href="#" onclick="goPage('1'); return false;"> <img alt="First-Page" border="0" src="/images/ic_arrow_first.gif"/></a> <a href="#" onclick="goPage('1'); return false;"><span> 1 </span></a> <a href="#" onclick="goPage('41'); return false;"><span> 2 </span></a> <a href="#" onclick="goPage('81'); return false;"><span> 3 </span></a><a href="#" onclick="goPage('241'); return false;"><span> 280 </span></a><a href="#" onclick="goPage('281'); return false;"><span> 281 </span></a></div>'''

soup = BeautifulSoup(html, 'html.parser')

# 用select定位所有包含页码的span标签(它们都在page2容器下的a标签里)
page_spans = soup.select('div.page2 a span')
if page_spans:
    # 取最后一个span的文本,strip()去掉前后空格
    last_page_num = page_spans[-1].get_text(strip=True)
    print(f"最后一页是:{last_page_num}")  # 输出 281

情况2:有专门的「最后一页」按钮(带箭头图标)

如果分页末尾是带图标的「最后一页」按钮,页码藏在它的onclick属性里,可以结合正则提取:

from bs4 import BeautifulSoup
import re

html = '''<div class="page2"><a href="#" onclick="goPage('1'); return false;"> <img alt="First-Page" border="0" src="/images/ic_arrow_first.gif"/></a> <a href="#" onclick="goPage('1'); return false;"><span> 1 </span></a> <a href="#" onclick="goPage('41'); return false;"><span> 2 </span></a> <a href="#" onclick="goPage('81'); return false;"><span> 3 </span></a><a href="#" onclick="goPage('281'); return false;"> <img alt="Last-Page" border="0" src="/images/ic_arrow_last.gif"/></a></div>'''

soup = BeautifulSoup(html, 'html.parser')

# 先定位到「最后一页」按钮的img标签,再获取它的父元素a标签
last_page_link = soup.select_one('div.page2 img[alt="Last-Page"]').parent
# 获取onclick属性内容
onclick_content = last_page_link.get('onclick')
# 用正则匹配出goPage('数字')里的数字
match = re.search(r"goPage\('(\d+)'\)", onclick_content)
if match:
    last_page_num = match.group(1)
    print(f"最后一页是:{last_page_num}")  # 输出 281

两种方法都用了BeautifulSoup的select/select_one方法,前者返回符合条件的元素列表,后者返回第一个匹配的元素,根据你的实际HTML结构选对应的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:55:23