brunch

You can make anything
by writing

C.S.Lewis

by Moai Nov 21. 2020

Sqlite와 Crontab 응용

실시간 주식 정보 가져와서 DB에 저장하기

REST API를 공부하기 앞서서 디비에 데이터를 쌓아주기 위해 크롤링 서비스를 가볍게 만들어보자.

https://finance.daum.net/domestic/rise_stocks?market=KOSPI


위 페이지에서는 최근에 가장 상승을 많이 한 주식종목을 실시간으로 보여준다. 이 페이지에서 주식정보를 가져오는 API를 후킹해서 우리의 DB에서 쌓아보자. 위 페이지에 들어간 뒤 개발자도구를 실행시키자.

그리고 네트워크 탭을 클릭하고 필터를 XHR로 고정하자. 브라우저로 홈페이지에 방문하면 이미지, 소스코드, 스타일 정보들을 가져오는데 이때 웹에 보여지는 순수 데이터 정보도 가져온다. 이러한 정보는 제이쿼리와 같이 웹페이지의 코드(자바스크립트)에서 정보를 요청하고 가져오게 되는데 보통 JSON 형태로 가져온다.



위 주소에서 우측 중간에 Preview 탭을 클릭하면 요청해서 받은 데이터 정보를 보기 쉽게 확인할 수 있다.


결국 이 데이터는 아래 링크에서 가져올 수 있다는 것을 확인할 수 있었다.

https://finance.daum.net/api/trend/price_performance?page=1&perPage=30&intervalType=TODAY&market=KOSPI&changeType=RISE&pagination=true&order=desc


URL 주소를 보면 알겠지만 파라미터를 조금씩 변경하면 가져오는 양과 가져오는 데이터를 바꿀 수도 있다. 예를들어 perPage의 개수를 늘리면 더 많은 데이터를 가져올 수 있고 market를 KOSDAQ로 변경하면 코스닥 정보를 가져올 수 있다. 문서를 통해 확인은 하지 못했으나 API 규칙으로 예상된다.


이제 어디서 데이터를 가져오면 되는지 확인했으니 이러한 정보를 주기적으로 가져와 디비에 저장하는 코드를 구현해보자



마이크로 서비스 단위로 개발, 관리하기 위해 리눅스의 크론탭 대신 python의 apscheduler 크론탭 라이브러리를 이용했다.


DB는 간단히 테스트를 하기 위해 sqlite를 이용했다.


크롤링 정보는 DAUM으로부터 today 주식 상위 30개 정보를 가져오는 것으로 테스트했다.


python main.py -h를 통해 도움말을 확인할 수 있다.


https://gist.github.com/moaikim/93b93fbaa0316459f49bdc4bddf91bde


매거진의 이전글 Sqlite와 Crontab
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari