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

Python如何从HTML文本中提取股价、NAV及折溢价率数值?

可以使用检索目标前后固定文本的方式提取,同时也有更稳定的实现方案,具体如下:


方案1:正则匹配(基于前后固定文本检索)

该方案逻辑简单,不需要依赖第三方库,只要目标值前后的特征字符串长期不变就可以使用:

  • 匹配逻辑:定位Current</td>后的三个right-align类的td标签内容,直接用正则捕获需要的数值
  • 示例代码:
import re

html_str = """你的完整HTML文本"""
# 正则规则,三个捕获组分别对应你需要的三个值
pattern = r'<td>Current</td><td class="right-align">(\$\d+\.\d+)</td><td class="right-align">(\$\d+\.\d+)</td><td class="right-align">(-?\d+\.\d+%)</td>'
result = re.search(pattern, html_str)
if result:
    share_price, nav, discount = result.groups()
    print(share_price, nav, discount)
  • 注意事项:如果HTML代码里的空格、标签属性、换行有变动,会导致匹配失败,只适合结构完全固定的场景。

方案2:HTML解析库提取(更推荐,稳定性更高)

使用专门的HTML解析工具直接定位DOM元素,抗结构变动能力更强,只要表格的表头和Current行的顺序不变,就算标签属性、空格换行有调整也能正常提取:

  • 首先安装依赖库:pip install beautifulsoup4
  • 示例代码:
from bs4 import BeautifulSoup

html_str = """你的完整HTML文本"""
soup = BeautifulSoup(html_str, "html.parser")
# 定位到Current所在的行
current_tr = soup.find("td", text="Current").parent
# 按顺序取后面三个td的文本
values = [td.text.strip() for td in current_tr.find_all("td")[1:]]
share_price, nav, discount = values
print(share_price, nav, discount)
  • 优势:不用关心HTML代码的格式细节,只要页面的功能结构不变就可以长期运行,适合日常爬取使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:54:04