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

如何用BeautifulSoup定位<p>类抓取微软SEC 10-K利润表?

解决微软10-K利润表抓取问题

问题原因

你用soup.find('p', string='INCOME STATEMENTS ')失败,核心是精确字符串匹配不兼容页面文本的格式差异:目标页面里的利润表标题可能没有末尾空格,或者存在换行、多空格/缩进,导致精确匹配无法命中。

修复方案:正则匹配定位标题

改用正则表达式模糊匹配标题文本,兼容格式差异,代码修改如下:

from bs4 import BeautifulSoup
import requests
import re  # 导入正则模块

headers = {"User-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"}
base_url = "https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-10k_20180630.htm"
edgar_resp = requests.get(base_url, headers=headers)
edgar_str = edgar_resp.text

soup = BeautifulSoup(edgar_str, 'html.parser')
# 用正则匹配标题,忽略大小写和前后空格
s = soup.find('p', recursive=True, text=re.compile(r'INCOME STATEMENTS', re.IGNORECASE))
if s:  # 增加判断避免找不到时报错
    t = s.find_next('table')
    trs = t.find_all('tr')
    for tr in trs:
        if tr.text.strip():  # 更严格的空行过滤
            print(list(tr.stripped_strings))
else:
    print("未找到利润表标题")

更优方案:直接定位特征表格

如果标题定位不稳定,可通过表格内的特征关键词(如"Net Income"、"Revenue")直接筛选表格:

from bs4 import BeautifulSoup
import requests

headers = {"User-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"}
base_url = "https://www.sec.gov/Archives/edgar/data/789019/000156459018019062/msft-10k_20180630.htm"
edgar_resp = requests.get(base_url, headers=headers)
edgar_str = edgar_resp.text

soup = BeautifulSoup(edgar_str, 'html.parser')
all_tables = soup.find_all('table')

# 遍历所有表格,筛选包含利润表特征关键词的表格
for table in all_tables:
    table_text = table.get_text()
    if "Net Income" in table_text and "Revenue" in table_text:
        trs = table.find_all('tr')
        for tr in trs:
            if tr.text.strip():
                print(list(tr.stripped_strings))
        break  # 找到第一个匹配的利润表后停止遍历

额外建议

SEC EDGAR提供结构化的XBRL数据,比直接解析HTML更稳定。你可以通过目标10-K页面的"Interactive Data"入口获取标准化的财务报表数据,但如果坚持解析HTML,上述两种方法足以解决当前问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:35:19