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

Python从SEC EDGAR接口获取数据后存变量为空问题排查

SEC EDGAR数据获取空列表问题排查

问题背景

从SEC EDGAR数据库获取数据,已确认接口URL有效(例如苹果公司:https://data.sec.gov/submissions/CIK0000320193.json),Python请求返回状态码200,浏览器能正常获取数据,但代码中存入变量的结果为空列表,保存到文件也为空。

错误原因

你的代码中尝试从JSON响应里提取hits字段:

filings_data = json_data.get('hits', [])

但SEC submissions接口的返回结构里不存在hits这个键。该接口的 filings 数据嵌套在filings字段下,其中recent子字段包含最新的申报记录,需要从中筛选10-K和10-Q类型的文件。

修正后的代码

获取数据的函数

import requests

def get_sec_data(cik):
    try:
        endpoint = f"https://data.sec.gov/submissions/CIK{cik}.json"
        print("API Endpoint:", endpoint)

        headers = {
            'User-Agent': "dom dom dom@gmail.com",
            'Accept-Encoding': 'gzip, deflate'
        }

        response = requests.get(endpoint, headers=headers)
        if response.status_code != 200:
            raise Exception(f"请求失败,状态码: {response.status_code}")

        json_data = response.json()
        # 从filings.recent中提取最新的10-K和10-Q记录
        recent_filings = json_data.get('filings', {}).get('recent', {})
        forms = recent_filings.get('form', [])
        accession_numbers = recent_filings.get('accessionNumber', [])
        filing_dates = recent_filings.get('filingDate', [])

        filings_data = []
        for form, acc_num, date in zip(forms, accession_numbers, filing_dates):
            if form in ['10-K', '10-Q']:
                filings_data.append({
                    'form_type': form,
                    'accession_number': acc_num,
                    'filing_date': date
                })

        return filings_data

    except Exception as e:
        raise Exception(f"错误: {str(e)}")

调用并保存数据的代码

# 替换为目标CIK,比如苹果的0000320193
cik = "0000320193"

try:
    results = get_sec_data(cik)
    if not results:
        print("未找到10-K或10-Q类型的申报记录")
    else:
        print("成功获取SEC数据")
        for entry in results:
            print(entry)

    file_path = "/users/domdom/desktop/Project/test.txt"
    with open(file_path, 'w') as file:
        for entry in results:
            file.write(str(entry) + '\n')

    print(f"数据已写入: {file_path}")

except Exception as e:
    print(e)

关键说明

  • SEC的submissions接口核心数据都在filings节点下,需按照实际结构提取内容
  • 必须严格遵守API的User-Agent要求(提供有效的邮箱),否则可能被限制访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:12:09