728x90
주식 정보데이터 시스템에서 크롤링을 할 것이다.
여기서 주식 정보를
http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd
여기서는 주식 가격 정보를 가져올 것이다.
https://finance.naver.com/item/main.naver?code=452260
import requests
import pandas as pd
from tqdm import tqdm
krx = "http://data.krx.co.kr/comm/bldAttendant/getJsonData.cmd"
payload = {"bld": "dbms/MDC/STAT/standard/MDCSTAT01901",
"locale": "ko_KR",
"mktId": "ALL",
"share": "1",
"csvxls_isNo": "false",}
krx_r = requests.post(krx, data=payload)
krx_r_data = krx_r.json()['OutBlock_1']
krx_r_data = [item for item in krx_r_data if item['MKT_TP_NM'] in ["KOSPI", "KOSDAQ"]]
for stock_info in tqdm(krx_r_data, desc="Processing stocks"):
symbol = str(stock_info['ISU_SRT_CD'])
start_date = "19800101"
end_date = "20240104"
url2 = f"https://api.finance.naver.com/siseJson.naver?symbol={symbol}&requestType=1&startTime={start_date}&endTime={end_date}&timeframe=day"
r2 = requests.post(url2)
tmp_df = pd.DataFrame(eval(r2.text.strip())[1:], columns=eval(r2.text.strip())[0])
tmp_df['MV05']=tmp_df['종가'].rolling(5).mean()
tmp_df['MV20']=tmp_df['종가'].rolling(20).mean()
tmp_df['MV60']=tmp_df['종가'].rolling(60).mean()
tmp_df['MV90']=tmp_df['종가'].rolling(90).mean()
tmp_df['MV120']=tmp_df['종가'].rolling(120).mean()
tmp_df['ticker'] = symbol
tmp_df.dropna(inplace=True)
tmp_df.to_csv(f"./stock/{symbol}.csv" , index=False, encoding='utf-8-sig')
변동 값들을 확인할 수 있다.
728x90
'Bootcamp > Web' 카테고리의 다른 글
[Django] Django (0) | 2024.01.11 |
---|---|
[Django] 첫 설치 (0) | 2024.01.10 |
[Notalone] mini project (web) (0) | 2023.12.27 |
[Spring] Spring Security (0) | 2023.12.27 |
[Spring] Spring _ Validation, Valid annotation & Exception (0) | 2023.12.07 |