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

如何使用Python的SEC Edgar API筛选指定日期与关键词的申报文件?

解决sec_edgar_api添加日期范围与关键词筛选的问题

get_submissions方法仅返回目标CIK的全量提交元数据,不支持直接嵌入日期范围和关键词筛选逻辑。要复现Edgar官网的搜索功能,需分两步实现:先筛选指定日期范围内的提交文件,再对文件内容做关键词匹配。

步骤1:筛选指定日期范围的提交文件

从返回的submissions字典中提取提交记录,通过filingDate或reportDate字段过滤日期区间:

from sec_edgar_api import EdgarClient
from datetime import datetime

edgar = EdgarClient(user_agent="<Sample Company Name> <Admin Contact>@<Sample Company Domain>")

# 配置目标参数
target_cik = "104169"
start_date = datetime(2023, 1, 1)
end_date = datetime(2023, 12, 31)

# 获取全量提交记录(开启自动分页)
submissions = edgar.get_submissions(cik=target_cik, handle_pagination=True)

filtered_filings = []
# 过滤近期提交
for filing in submissions['filings']['recent']:
    filing_date = datetime.strptime(filing['filingDate'], "%Y-%m-%d")
    if start_date <= filing_date <= end_date:
        filtered_filings.append(filing)

# 过滤历史分页提交
if 'files' in submissions['filings']:
    for file_entry in submissions['filings']['files']:
        for filing in file_entry['filings']:
            filing_date = datetime.strptime(filing['filingDate'], "%Y-%m-%d")
            if start_date <= filing_date <= end_date:
                filtered_filings.append(filing)

步骤2:对筛选文件进行关键词匹配

通过get_filing_url获取文件链接,下载内容后检查是否包含目标关键词:

import requests
import time

target_keywords = ["sustainability", "carbon emissions"]
matched_filings = []

for filing in filtered_filings:
    # 获取提交文件的完整URL
    filing_url = edgar.get_filing_url(
        cik=target_cik,
        accession_number=filing['accessionNumber'],
        primary_doc=filing['primaryDocument']
    )
    
    # 请求文件内容(添加延迟避免触发反爬)
    time.sleep(1)
    response = requests.get(filing_url)
    response.raise_for_status()
    filing_content = response.text.lower()
    
    # 匹配关键词(忽略大小写)
    if any(keyword.lower() in filing_content for keyword in target_keywords):
        matched_filings.append({
            'cik': target_cik,
            'form_type': filing['form'],
            'filing_date': filing['filingDate'],
            'accession_number': filing['accessionNumber'],
            'url': filing_url
        })

# 输出匹配结果
for item in matched_filings:
    print(f"匹配文件: 表单类型{item['form_type']} | 提交日期{item['filing_date']} | 链接{item['url']}")

关键注意事项

  • 必须填写合规的user_agent,SEC要求包含实体名称和联系方式,否则请求会被拦截。
  • 若遇到PDF格式的提交文件,需使用PyPDF2等库解析文本后再做关键词匹配。
  • 严格控制请求频率,避免触发SEC的访问限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:40:07