如何用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
相关产品推荐
相关产品推荐

