Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

10장 한국거래소 업종분류 현황 및 개별지표 크롤링 오류 #51

Open
NureongKim opened this issue Jul 19, 2024 · 4 comments

Comments

@NureongKim
Copy link

NureongKim commented Jul 19, 2024

안녕하세요, 헨리의 퀀트대학 유튜브 강의와 파이썬을 이용한 퀀트 투자 포트폴리오 만들기 교재 잘 보고 있습니다.
해당 교재 10장 공부 중에 KRX 정보데이터시스템 홈페이지에서 한국거래소 업종분류 현황 및 개별지표를 크롤링 하는 부분에 오류가 있어 문의드립니다.

########OTP 받아오는 과정
import requests as rq
from io import BytesIO
import pandas as pd

gen_otp_url = 'http://data.krx.co.kr/comm/fileDn/GenerateOTP/generate.cmd' # generate.cmd의 Request URL

#########Payload 탭 정보
gen_otp_stk = {
'mktId': 'STK',
'trdDd': biz_day, # 아까 추출한 최근 영업일로 날짜 설정
'money': '1',
'csvxls_isNo': 'false',
'name': 'fileDown',
'url': 'dbms/MDC/STAT/standard/MDCSTAT03901'
}
headers = {'Referer':'http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?'} # 우리가 거쳐온 흔적. Headers 부분 아래의 Referer
otp_stk = rq.post(gen_otp_url, gen_otp_stk, headers = headers).text

print(otp_stk)

위와 같은 교재 코드를 실행하면 아래와 같은 오류가 나오면서 데이터가 올바르게 수집되지 않는 것을 볼 수 있고 개별종목 또한 마찬가지의 결과가 나옵니다. 어떻게 해결해야 하는지 여쭙고 싶습니다.

	<html>
<title>Error - KRX | Market Data System</title> <style type="text/css"> .error {position:relative; width:100%; height:100%; background:#f6f7fc; font-family:'Open Sans', sans-serif;} .error .content {position:absolute; left:50%; top:50%; width:724px; height:224px; padding-left:206px; padding-top:50px; margin:-150px 0 0 -362px; line-height:1.6; font-size:13px; color:#666666; background:url('/comm/error/img/bg_error.png') no-repeat left 0;} .error .content:after {content:'Market Data System'; display:block; position:absolute; bottom:80px; left:333px; font-weight:600; letter-spacing:-1px;} .error .content p span {display:block; line-height:1; margin-bottom:13px; font-size:20px; font-weight:600; color:#00b4d5;} .error .btnWrap {position:absolute; left:0; top:50%; width:100%; margin:90px 0 20px 0; text-align:center;} .error .btnWrap a {display:inline-block; background:#7070e7; color:#eeeeee; padding:10px 30px 10px 30px; border-radius:8px; font-size:15px; font-weight:600; text-decoration:none;} </style>

Service unavailable The service is not smooth due to temporary access instability.
If you have any questions about this, please contact system manager.

@kimhankyeol
Copy link

headers = {'Referer':'http://data.krx.co.kr/contents/MDC/MDI/mdiLoader','Upgrade-Insecure-Requests': '1','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'}
헤더 부분에 2개 추가 해주시고 User-Agent 부분은 generate.cmd 에서 참고해서 바꿔주세요.
그러면 정상조회 됩니다.

@ys16064
Copy link

ys16064 commented Aug 7, 2024

답변 감사합니다. 저도 질의자와 같은 문제가 있는데요.
조금 더 자세히 설명 가능하실지요?

헤더부분에 2개 추가하라는 말씀이... ? 헤더부분은 아래와 같이 대체 하라는 말씀인지요?

"headers = {'Referer':'http://data.krx.co.kr/contents/MDC/MDI/mdiLoader','Upgrade-Insecure-Requests': '1','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'}"

감사합니다.

@NureongKim
Copy link
Author

네 말씀주신 형태로 headers에 입력하니 코드가 원활하게 실행되었습니다.

@ys16064
Copy link

ys16064 commented Aug 8, 2024

감사합니다. 저도 예전처럼 잘 실행되었습니다.

근데, 원래
"headers = {'Referer':'[http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?'}

에서
"headers = {'Referer':'http://data.krx.co.kr/contents/MDC/MDI/mdiLoader','Upgrade-Insecure-Requests': '1','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'}"

으로 바꾸는 것은 왜 그런가요?

단순히, 해당사이트의 generated.cmd가 변경되서 바꿔줘야 하는 것인가요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants