일단 주식 과거 데이터를 수집하는 것 부터 하기로 했다.
1. 먼저 무료 api부터 찾아봤다.
해외 api 서비스들이 많긴 하던데 일 500리퀘스트 제한에 미국 기준이라 한국 주식에 대한 정보는 없는 듯 했다.
삼성같은경우 미국 심볼인 SSNLF로 검색하면 나오긴 하던데 다른 주식들은 잘 안되길래 포기..
나중에 안건데 야후의 경우 한국주식은 종목코드.KS 라고 검색해야지 가져올 수 있었음.
2. 다음 금융 크롤링
const res = await axios.get(
"https://finance.daum.net/api/quote/A005930/days?symbolCode=A005930&page=1&perPage=100&pagination=true",
{
headers: {
referer: "https://finance.daum.net/quotes/A005930",
"user-agent": "Mozilla/5.0",
},
}
)
이렇게 요청하니 되긴 한다.
perPage에 숫자를 넣으면 그 양만큼 리턴하던데 1000개 넣으니 forbidden 에러가 뜸. 아마 한번에 가져올 수 있는 데이터가 제한이 있는듯? 이걸로 모든 데이터를 가져오는덴 너무 번거롭다 싶어서 다른방법을 찾아봤다.
3. investpy
investing.kr 사이트의 주식정보를 가져와주는 파이썬 패키지이다. 내가 요청할때마다 이 패키지에서 크롤링을 하는건지 미리 크롤링해놓은 데이터를 주는건지는 잘 모르겠지만 한국 주식 데이터도 잘 가져온다.
문제는 가장 과거 데이터가 2011년도 8월이다. 너무 편하고 좋은데 이 어플은 오랜 기간 투자했을 때 얼마나 벌 수 있는지가 재미요소인데 이 점 때문에 아쉽지만 다음 금융으로 해야겠다.
4. pandas 좀더 찾다가 발견했는데 이게 대박임.
pandas - Python Data Analysis Library
About pandas History of development In 2008, pandas development began at AQR Capital Management. By the end of 2009 it had been open sourced, and is actively supported today by a community of like-minded individuals around the world who contribute their va
pandas.pydata.org
이것도 파이썬 오픈소스인데 이건 2000년도것부터 가져오는게 가능하다. 여러가지 금융회사에서 데이터를 가져오는 것 같은데 네이버 금융 데이터도 참조할 수 있다(pandas-datareader.readthedocs.io/en/latest/remote_data.html 가장 아래에 있음)
두번째 인자로 yahoo를 주면(아마 야후 파이낸스에서 데이터를 가져오는듯 하다) 조정주가도 얻을 수 있는데 이게 배당, 액면분할까지 고려해서 과거 주가를 조정하는것이라고 한다. 배당, 액면분할을 어떻게 적용해야할 지 골치였는데 단번에 해결되버렸다. 이걸로 해야겠다 확정!
솔직히 pandas 이게 어떻게 오픈소스인지 모르겠다. 다른 해외 api들은 월 몇만원씩 받고 리퀘스트 제한걸고 데이터를 주는데 이건 도큐먼트 읽어봐도 제한도 딱히 없는 것 같은데 이렇게 큰 데이터를 무상으로 제공할 수 있는거지??
혹시나해서 주식 데이터를 가져오는 함수를 반복문에 넣고 돌려봤는데 132번까지 문제없이 돌아갔다.
그래도 데이터를 불러오는데 시간이 좀 걸리는지라 내 db에 따로 저장하고 앱에서 요청은 내 db에서 가져오는 식으로 해야겠다.
문제는 pandas가 node에 쓰이는 라이브러리는 딱히없어서 파이썬을 쓰긴 해야하는데 내가 파이썬 숙련도가 없다. flask가 간단한 rest api를 만들기 쉽다는데 조금만 익혀서 파이썬 서버를 만들지 아니면 데이터를 가져와서 db에 저장하는데까지만 동작하는 파이썬파일을 만들고 하루 한번씩 자동으로 실행시키는 것도 괜찮을것 같음.
'프로젝트' 카테고리의 다른 글
주식 적립식 투자앱 만들기 - 5 (0) | 2020.11.26 |
---|---|
주식 적립식 투자앱 만들기 - 4 (2) | 2020.11.24 |
주식 적립식 투자앱 만들기 - 3 (0) | 2020.11.20 |
주식 적립식 투자앱 만들기 - 1 (0) | 2020.11.17 |
일기장 앱 / 학점 계산기 앱 (0) | 2020.11.16 |