Bootcamp/Web

[Crawling] 주식 정보

K_Hyul 2024. 1. 4. 20:21
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')

 

 

[그림1] Request URL찾기 : krx

 

[그림2] Payload 찾기

 

[그림3] 주식 가격 url 찾기

 

[그림4] 주식가격 Payload

변동 값들을 확인할 수 있다.

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