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

使用Beautiful Soup的find()函数提取网页表格特定数值遇到困难

如何用Beautiful Soup提取指定行业的Fund数值

没问题,我来帮你精准提取这个11.95的数值!先看看你的HTML结构:目标数值是Consumer Cyclical行业对应的Fund列数据,嵌套在该行的第二个<td>里的<span>标签中。这里给你两种可靠的提取方法:

方法一:通过行业文本逐层定位(直观易懂)

这种方法先找到目标行业的文本元素,再向上追溯到所在行,最后提取对应列的数值:

from bs4 import BeautifulSoup

# 你的HTML代码
html = """
<table class="sal-sector-exposure__sector-table"><thead><tr><th>Sectors</th> <th><span class="sal-sector-exposure__col-icon sal-sector-exposure__col-icon--fund"></span> <span class="sal-sector-exposure__col-title">Fund</span> <span class="sal-sector-exposure__col-pct">%</span></th> <!----> <th><span class="sal-sector-exposure__col-icon sal-sector-exposure__col-icon--benchmark"></span> <span class="sal-sector-exposure__col-title sal-sector-exposure__col-title--long">Category</span> <span class="sal-sector-exposure__col-title sal-sector-exposure__col-title--short">Cat</span> <span class="sal-sector-exposure__col-pct">%</span></th></tr></thead> <tbody><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-basic-materials"></i></span> <span>Basic Materials</span></td> <td><span>5.46</span></td> <!----> <td><span>4.60</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-consumer-cyclical"></i></span> <span>Consumer Cyclical</span></td> <td><span>11.95</span></td> <!----> <td><span>12.04</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-financial-services"></i></span> <span>Financial Services</span></td> <td><span>17.97</span></td> <!----> <td><span>15.44</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-real-estate"></i></span> <span>Real Estate</span></td> <td><span>1.86</span></td> <!----> <td><span>5.16</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-communication-services"></i></span> <span>Communication Services</span></td> <td><span>8.61</span></td> <!----> <td><span>9.22</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-energy"></i></span> <span>Energy</span></td> <td><span>4.15</span></td> <!----> <td><span>3.14</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-industrials"></i></span> <span>Industrials</span></td> <td><span>12.08</span></td> <!----> <td><span>10.62</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-technology"></i></span> <span>Technology</span></td> <td><span>18.32</span></td> <!----> <td><span>19.33</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-consumer-defensive"></i></span> <span>Consumer Defensive</span></td> <td><span>5.25</span></td> <!----> <td><span>5.96</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-healthcare"></i></span> <span>Healthcare</span></td> <td><span>12.38</span></td> <!----> <td><span>12.03</span></td></tr><tr><td><span class="sal-sector-exposure__sector"><i class="ms ms-sector-utilities"></i></span> <span>Utilities</span></td> <td><span>1.96</span></td> <!----> <td><span>2.45</span></td></tr></tbody></table>
"""

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

# 1. 找到包含"Consumer Cyclical"的span元素
sector_span = soup.find('span', string='Consumer Cyclical')
# 2. 向上找到该行的<tr>标签
sector_row = sector_span.find_parent('tr')
# 3. 取该行的第二个<td>(索引为1,因为从0开始计数),再提取里面span的文本
fund_value = sector_row.find_all('td')[1].span.text

print(fund_value)  # 输出:11.95

方法二:用CSS选择器直接定位(简洁高效)

如果你的BeautifulSoup版本是4.7.0及以上,可以用更简洁的CSS选择器一次性定位到目标元素,适合熟悉CSS选择器的开发者:

# 用CSS选择器:找到表格中包含Consumer Cyclical的行,再取第二个td里的span
fund_value = soup.select_one('table.sal-sector-exposure__sector-table tr:has(span:contains("Consumer Cyclical")) td:nth-of-type(2) span').text

print(fund_value)  # 输出:11.95

注意事项

  • 方法二中的:has()和:contains()选择器需要BeautifulSoup 4.7.0或更高版本支持,如果你的版本较低,建议使用方法一。
  • 两种方法都能精准定位到目标数值,你可以根据自己的习惯和环境选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:02:32