如何用BeautifulSoup提取HTML表格中Proj. EPS Growth (F1)对应数据
解决方案
你当前的代码仅提取了整个div容器的全部文本内容,没有做精准的元素定位,无法直接拿到目标数据,可按以下逻辑修改:
实现思路
- 首先定位到文本内容为
Proj. EPS Growth (F1)的<th>标签,注意处理标签文本前后的多余空格避免匹配失败 - 找到该
<th>标签后,提取它相邻的下一个<td>标签的文本即可拿到目标值
完整可运行代码
from bs4 import BeautifulSoup import requests # 替换为你实际的请求url url = "你的目标页面地址" page = requests.get(url) soup = BeautifulSoup(page.content, 'lxml') # 匹配目标th标签,strip处理文本前后空白符 target_th = soup.find( 'th', class_='alpha', string=lambda s: s and s.strip() == 'Proj. EPS Growth (F1)' ) if target_th: # 提取相邻td的文本 eps_growth = target_th.find_next_sibling('td').get_text(strip=True) print(eps_growth) # 输出结果为 39.74% else: print("未找到对应字段")
说明
- 用lambda处理匹配逻辑是因为你提供的示例HTML中
<th>的文本末尾带有多余空格,直接完全匹配会识别失败,strip()可以清除前后所有空白符(空格、换行等)提升匹配兼容性 find_next_sibling('td')会直接查找当前标签同级的下一个<td>元素,正好对应<th>后面的数值单元格,不需要遍历整个表格
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

