inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

JINHWANG KIM님의 게시글

JINHWANG KIM JINHWANG KIM

@jindev

수강평 작성수
7
평균평점
5.0

게시글 1

질문&답변

StockListing 함수 직접 만들기 (22년 1월 이후 FinanceDataReader의 StockListing 함수 결과값이 달라짐) 강의편에서 크롤링 함수 오류가 납니다.

이 오류는 fdr.StockListing('KRX') 호출 시 KRX 마켓 데이터를 가져오기 위해 요청한 URL 응답이 JSON 형식이 아닌 빈 응답 혹은 HTML이라서 json.loads() 가 실패 해서 발생하는 문제입니다. ❗ 핵심 원인 FinanceDataReader 내부에서 사용하는 KRX 사이트 가 최근 변경되었거나 , 크롤링 방지/접근 차단(403, 200 HTML)이 걸린 경우 입니다. 특히 fdr 0.9.50 이후부터 KRX 관련 API가 자주 깨지는 현상이 발생하고 있습니다. ✅ 해결 방법 1: fdr 최신 버전으로 업그레이드 먼저 최신 버전인지 확인하세요: pip install -U finance-datareader 현재 기준 최신 안정 버전은 0.9.81 입니다. 확인: import FinanceDataReader as fdr print(fdr.__version__) 그럼에도 여전히 fdr.StockListing('KRX') 에서 오류가 나면 다음 방법으로 우회해야 합니다. ✅ 해결 방법 2: 수동으로 KRX 상장기업 목록 가져오기 (우회) KRX에서 직접 CSV로 받거나 GitHub에 있는 미러 데이터를 사용: import pandas as pd # KRX 상장 기업 목록 (코자존이 올려둔 GitHub 백업 데이터) df_krx = pd.read_csv("https://raw.githubusercontent.com/corazzon/finance-data-analysis/main/krx.csv") # 확인 print(df_krx.head()) 이 방법은 실시간은 아니지만, 실제 fdr 내부에서도 옛날엔 이 파일을 기반으로 했습니다. ✅ 해결 방법 3: KRX Open API 직접 호출 (고급) KRX의 공식 데이터를 직접 요청하려면 다음과 같은 POST 요청을 구성해야 합니다. (예전엔 fdr 가 이걸 대신해줬지만, 요즘 잘 안됩니다) 예: https://data.krx.co.kr/contents/MDC/MDI/mdiLoader 에 적절한 payload로 요청 하지만 이건 header, session, params 다 맞춰야 해서 꽤 번거롭습니다. 🔚 결론 FinanceDataReader.StockListing('KRX') 는 종종 깨짐 (KRX 사이트 변경 때문) 임시 해결: fdr 최신화 또는 CSV 백업본 사용 장기적 해결: 별도 크롤러 구현 필요 (공식 API 쓰기) 필요하시면 최신 KRX 상장사 목록을 CSV로 직접 내려드릴 수도 있습니다. 원하시나요? 이거라도 ...

좋아요수
0
댓글수
1
조회수
406