[Project-StockTracker] 내 주식 관련 정보를 매일 간편하게 체크해보자

jonas-jun·2021년 8월 3일
0

Project

목록 보기
5/6
post-thumbnail

주가 스크래핑, 주가 크롤링, 네이버 뉴스 스크래핑

Program repository (https://github.com/jonas-jun/stock_management)

내 주식에 대해 트래킹할 정보

주식에 투자하고 있을 때 종종 체크해야할 정보는 무엇이 있을까? 1)우선 호가창에서 바로 볼 수 있는 주가 변동 관련 정보가 있다. 주가와 거래량, 그리고 둘의 변동률, 외인과 기관의 수급 등이 여기에 포함된다. 다른 하나는 2)기업에 관한 정보이다. 최근 기사들을 통해 기업의 활동이나 공시에 대해 체크할 수 있다.
이 둘은 MTS 앱에서, 그리고 네이버에서 쉽게 찾아볼 수 있다. 하지만 종목 수가 많아질수록 모든 기사들을 체크해보는 것은 번거로울 수밖에 없다. 그래서 편하게 엑셀 시트 한 페이지에 정리해주는 프로그램을 구현해보았다.

주가 정보 Scraper

네이버 금융의 아래 시세 페이지에서 정보를 가져온다. 빨간 박스 테이블에서 현재가, 전일대비 등락률, 거래량을 찾았다. 깃허브의 price_inform.py 파일에서 작동한다.

뉴스 Scraper

네이버 검색시 뉴스탭의 정보들을 가져온다. 옵션에 따라 관련도순, 최신순을 선택하여 기사 종류를 바꿀 수 있다. 기사제목, 주요 요약 내용, 업로드 시점, 매체 이름을 가져온다. 검색 특성상 직접 관련이 없는 기사도 포함이 될 수 있다(현대모비스 등의 경우 현대 축구단 관련 내용이 많이 포함되기도 한다). 따라서 여러 기사 정보를 불러온 후 제목과 주요 내용을 보고 꼭 읽어봐야할 것 같다면 링크를 눌러 다시 정독하면 좋다.

실행 방법

github에 프로그램을 담아놓았으니 python만 있다면 누구나 쉽게 실행 가능하다. git의 repository를 clone 후 main.py를 아래 옵션들과 함께 실행시키면 된다.

두 가지만 input으로 입력해주면 된다.
하나는 기사 scraper에 전해줄 옵션이다.

--start: 20210730, 기사 크롤링 시작할 날짜
--end: 20210803, 기사 크롤링 마지막 날짜 (기본은 당일이다. 오늘까지의 기사를 가져온다는 뜻)
--sort: 네이버에 검색했을 때 정렬 기준. 0은 관련도순, 1은 최신순, 2는 오래된순(?)이다. 매일 체크한다면 0보다는 1을 활용할 때가 많을 것이다.
--max_page: 네이버 뉴스 페이지 기준으로 최대 몇페이지까지 긁어올지를 나타낸다. 한 페이지에 10개의 꼭지 기사들이 있어서 3을 입력한다면 최대 30개의 기사를 저장하게 된다.

두 번째는 정보를 가져올 기업 리스트이다. 리스트 형태로 전달해줄 필요는 없고 띄어쓰기 공백을 기준으로 상장된 이름을 정확히 입력해주면 된다. 상장명과 일치해야 KRX(거래소)에서 종목코드를 불러와 주가 정보를 가져올 수 있다.

삼성전자 카카오 라온피플 그린플러스 NAVER

결과물
sheet 0에는 주가 정보, sheet 1에는 기사 정보가 담긴 excel 파일이 하나 생성된다. sheet 1의 리스트를 쭉 내려보면서 제목과 주요 content가 궁금하다면 링크를 눌러서 확인하면 된다.

To Do

시간이 허락한다면 다음 기능들을 하나씩 붙여보고 싶다.

  • 공시 크롤링: 당일 발생한 공시가 있다면 스크래핑(Dart)
  • 기사 본문들을 가져와서 주요 키워드 시각화: 각 기업에 대한 기사들 뭉치를 하나의 document로 보고 TF-IDF 방식으로 주요 키워드를 추출해서 워드클라우드나 빈도순 나열해주면 어떨까. 이런 정보들을 방대한 DB에 쌓으면 토스증권과 같은 핀테크 앱에서 관계형 정보를 제공할 때 유용할 것 같다.
  • 기사 감성분석: Finance 분야에 adaptation 된 BERT 모델을 가져와서 최근 0일 발생한 기사에 대한 감성을 분석해볼 수도 있다.
  • 최근 0일 간의 주가 흐름: 사실 예전에는 네이버 증권에서 sise_day 페이지를 스크랩 할 수 있어서 최근 0일간의 종가와 거래량, 외인 매매동향 등을 가져오는 프로그램을 짠 적이 있다. 그러나 어느 순간 이 페이지 소스가 달라져 작동하지 않았다. 다른 API등을 활용하거나 타 사이트를 활용해야 할 것 같다. (아래는 작년에 활용하던 프로그램, 오늘 거래량 뿐 아니라 yvolume(어제의 거래량)이나 foreign(외국인 매매동향) 등도 파악할 수 있었다)

혹시 더 필요하고 유용할 정보들이 있다면 제안해주시면 감사하겠습니다. 여유가 될 때 프로그램에 하나하나 붙여보고 싶습니다.

profile
Graduate School of DataScience, NLP researcher

0개의 댓글