반응형

Edgar_url.py
0.00MB

 

SEC(미국 증권거래위원회) EDGAR 시스템에서 특정 기업의 최신 10-K 보고서 링크를 자동으로 가져오는 방법을 정리합니다. 이 과정에서는 Python의 requests와 BeautifulSoup 라이브러리를 활용하여 웹 스크래핑을 수행합니다.

1. SEC EDGAR에서 10-K 보고서 검색 개요

SEC EDGAR은 미국에 상장된 기업들의 재무 보고서(10-K, 10-Q 등)를 제공하는 공개 데이터베이스입니다. 특정 기업의 10-K 보고서를 찾으려면 다음 URL을 사용합니다:

https://www.sec.gov/cgi-bin/browse-edgar?CIK=<티커>&type=10-K&count=10&action=getcompany

예를 들어, 애플(AAPL)의 10-K 보고서를 검색하려면 다음과 같은 URL을 사용합니다:

https://www.sec.gov/cgi-bin/browse-edgar?CIK=AAPL&type=10-K&count=10&action=getcompany

이 페이지에서 "Documents" 링크를 클릭하면 해당 보고서의 세부 문서 페이지로 이동할 수 있습니다.

2. Python을 사용한 10-K 보고서 링크 자동 추출

2.1 필요한 라이브러리 설치

먼저 필요한 라이브러리를 설치합니다:

pip install requests beautifulsoup4

2.2 10-K 보고서 URL을 가져오는 Python 코드

아래 코드는 SEC EDGAR에서 특정 기업의 최신 10-K 보고서 링크를 자동으로 찾아 반환합니다.

import requests
from bs4 import BeautifulSoup

def get_latest_10k_url(ticker):
    # SEC EDGAR 검색 페이지 URL
    search_url = f"https://www.sec.gov/cgi-bin/browse-edgar?CIK={ticker}&type=10-K&count=10&action=getcompany"
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0",
        "Referer": search_url
    }

    session = requests.Session()
    session.headers.update(headers)

    # SEC EDGAR 검색 페이지 요청
    response = session.get(search_url)
    soup = BeautifulSoup(response.text, "html.parser")

    # "Documents" 버튼 찾기
    doc_button = soup.find("a", string="Documents")
    if not doc_button:
        print(f"{ticker}의 10-K 보고서를 찾을 수 없습니다. (Documents 버튼 없음)")
        return None

    # "Documents" 페이지로 이동
    docs_url = "https://www.sec.gov" + doc_button["href"]
    response = session.get(docs_url)
    soup = BeautifulSoup(response.text, "html.parser")

    # "Document Format Files" 테이블 찾기
    table = soup.find("table", {"summary": "Document Format Files"})
    if not table:
        print(f"{ticker}의 보고서 테이블을 찾을 수 없습니다.")
        return None

    latest_10k_url = None
    for row in table.find_all("tr"):
        cols = row.find_all("td")
        
        # "10-K" 문서 찾기
        if len(cols) > 1 and "10-K" in cols[1].text:
            doc_link = cols[2].find("a")["href"]
            latest_10k_url = "https://www.sec.gov" + doc_link
            break

    if latest_10k_url:
        print(f"✅ 최신 10-K 보고서 링크: {latest_10k_url}")
        return latest_10k_url
    else:
        print(f"⚠️ {ticker}의 최신 10-K 보고서를 찾을 수 없습니다.")
        return None

# 애플(AAPL)의 최신 10-K 보고서 링크 가져오기
ticker = "AAPL"
latest_10k_url = get_latest_10k_url(ticker)

3. 코드 실행 결과 예시

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

✅ 최신 10-K 보고서 링크: https://www.sec.gov/ix?doc=/Archives/edgar/data/0000320193/000032019324000123/aapl-20240928.htm

이를 통해 애플(AAPL)의 최신 10-K 보고서 링크를 자동으로 가져올 수 있습니다.

4. 개선 및 확장 가능성

이 코드는 기본적인 기능을 수행하지만, 더 발전시킬 수 있습니다:

  1. 여러 기업을 한 번에 분석
  2. 10-Q(분기 보고서) 및 기타 보고서도 자동 수집
  3. NLP를 활용하여 보고서에서 중요한 정보 자동 추출
  4. Selenium을 이용하여 동적 크롤링 기능 추가

5. 결론

이제 Python을 사용하여 SEC EDGAR에서 최신 10-K 보고서를 자동으로 가져올 수 있습니다. 이 방법을 활용하면 투자 리서치, 기업 분석 및 데이터 수집을 자동화하는 데 유용할 것입니다.

혹시 추가적인 개선 사항이나 질문이 있다면 언제든지 알려주세요! 😊

반응형

+ Recent posts