使用BeautifulSoup从指定HTML页面中提取目标td标签数值183的实现问题
问题原因分析
你原有代码存在两处核心错误:
- 调用
get("align")获取的是td标签的align属性值,并非td内部的文本内容 - 未限定查找范围,会匹配页面所有带
stats1类的td元素,包含前面多个数据行内的无效td
修正后的实现代码
content = driver.page_source # 建议指定解析器,避免不同环境下的解析差异报错 soup = BeautifulSoup(content, 'html.parser') # 先定位到bgcolor为#eff6ef的目标数据行 target_tr = soup.select_one('tr.small[bgcolor="#eff6ef"]') # 取该行下第二个.stats1类的td(元素索引从0开始计数) target_val = int(target_tr.select(".stats1")[1].get_text(strip=True)) print(target_val) # 输出结果为183
备选定位方案
如果页面bgcolor属性可能动态变化,也可以直接匹配文本值定位:
target_td = soup.find('td', class_='stats1', string=lambda s: s and s.strip() == '183') target_val = int(target_td.get_text(strip=True))
内容的提问来源于stack exchange,提问作者Tims
相关产品推荐
相关产品推荐

