-
네이버 금융(차트)에서 주가 갈무리(크롤링)하기Python/파이썬과 주식 2019. 11. 5. 23:32반응형
* 투자용으로 사용하지 마십시오.
네이버 금융에는 플래시를 이용한 차트 서비스가 있습니다.
https://finance.naver.com/item/fchart.nhn?code=005930
크롬의 네트워크 모니터를 켜고 위 화면의 일봉을 클릭하면 다음 화면을 볼 수 있고...
여기서 다음 주소를 찾을 수 있습니다.
https://fchart.stock.naver.com/sise.nhn?symbol=005930&timeframe=day&count=1500&requestType=0
위 주소에 들어가 보면 XML형식의 삼성전자 일봉을 볼 수 있습니다.
카운트를 늘리니 최대 1990년 01월 03일 데이터까지 볼 수 있네요..
그런데 1990년 1월부터 2월까지의 데이터가 좀 이상합니다.
4만원대군요.. 다른 데이터들과 비교를 해봅니다.
같은 페이지에서 삼성전자의 월봉을 확인하니
3월 까지 보이고 이때 종가는 438원입니다.
이는 제공된 XML 데이터와 일치합니다.
<item data="19900331|435|440|430|438|111870"/>
MSN의 삼성전자 주식 서비스와도 비교를 해봅니다.
https://www.msn.com/ko-kr/money/stockdetails/krx-005930/fi-ajn83m
90년 2월까지의 데이터들은 잘못된 데이터인 것 같네요.
지워줘야 할 것 같습니다.
이제 필요한 정보를 모두 수집했으니 코딩해 봅시다.
import urllib.request import xml.etree.ElementTree as ET count = '8000' code = '005930' url = f'https://fchart.stock.naver.com/sise.nhn?symbol={code}&timeframe=day&count={count}&requestType=0' r = urllib.request.urlopen(url) xml_data = r.read().decode('EUC-KR') root = ET.fromstring(xml_data) for index, each in enumerate(root.findall('.//item')): temp = each.attrib['data'].split('|') temp[1] = int(temp[1]) temp[2] = int(temp[2]) temp[3] = int(temp[3]) temp[4] = int(temp[4]) temp[5] = int(temp[5]) if temp[0] >= "19900302": print(index, temp)
반응형