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

如何使用Beautiful Soup获取指定class的第一个span标签提取基金价格

基金爬取代码调整方案

核心修改逻辑

BeautifulSoup的findAll()方法会按页面出现顺序返回所有匹配元素的列表,你需要的价格在第一个匹配项里,直接取索引[0]就能定位,不需要遍历所有匹配的span。同时可以对日期、价格文本做简单清洗,直接拿到结构化数据。

调整后完整代码

from bs4 import BeautifulSoup
import requests
import csv # 如需存储为csv表格可导入该库

# 创建url列表
urls = ['https://www.blackrock.com/sg/en/products/241427/blackrock-cont-european-flexible-d4rf-gbp-fund']

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}

# 爬取循环
for url in urls:
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, "html.parser")
    # 直接取第一个class为header-nav-data的span,清洗文本得到纯价格
    price_span = soup.findAll('span', {'class':'header-nav-data'})[0]
    price = price_span.text.strip().replace('GBP', '').strip()
    # 提取日期,清洗掉冗余前缀
    date_span = soup.findAll('span', {'class':'header-nav-label navAmount'})[0]
    date = date_span.text.strip().replace('NAV as of', '').strip()
    
    # 打印验证结果
    print(f"日期:{date},价格:{price}")
    
    # 可选:写入csv表格的逻辑,首次运行可取消表头注释
    with open('fund_price.csv', 'a', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        # writer.writerow(['Date', 'Price'])
        writer.writerow([date, price])

关键改动说明

  • 取消原代码对所有header-nav-data元素的遍历,直接用[0]取第一个匹配的目标元素
  • 对提取到的原始文本做了去空格、删除冗余字符处理,直接拿到干净的日期和价格数值
  • 补充了写入csv表格的可选逻辑,适配存储数据到表格的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:39:02