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로 직접 내려드릴 수도 있습니다. 원하시나요? 이거라도 ...