[크롤링(Crawling)] 이란 무엇이며, ADR 정보 가져오는 예제 코딩하기
본문 바로가기

주식 자동매매 강의/중급반(시황 및 차트 구현)

[크롤링(Crawling)] 이란 무엇이며, ADR 정보 가져오는 예제 코딩하기

반응형

크롤링이란 특정 사이트에서 내가 원하는 정보만 가져오는 행위를 뜻합니다. 아래 설명에서 크롤링이 정확이 무엇이고 주식 자동매매를 위해 어떻게 사용되는지 알아보겠습니다.

 

크롤링은 깊이 들어가면 무한정 깊어지므로 핵심과 필요한 부분만 정리하겠습니다.

 

1. 크롤링(Craling) 예제

 아래 그림은 오늘 ADR 지표를 나타내는 사이트입니다. ADR은 주식 하방 또는 상방을 추정할 때 아주 중요하게 쓰이는 지표 중 하나입니다. 저는 이 지표를 이용해 오늘과 내일 장을 예측하는 편입니다.

 

ADR 지표 사이트
ADR 지표 사이트

 아래 그림을 보시면 크롤링을 통해 ADR 정보를 가져와 투자 가이드라인을 알려줄 때 지표 중 하나로 사용하고 있습니다. 이렇게 우리가 원하는 지표를 가져와 다양한 방면에 사용할 수 있습니다.

ADR 정보 가져오기
ADR 정보 가져오기

2. 크롤링(Craling) 코딩하기

 크롤링 코딩을 위해선는 2개의 라이브러리가 필요합니다. 즉, 크롤링을 위해 파이썬에서 미리 구성해 놓은 함수를 가져와 저희는 사용만 하면 된다는 뜻이죠. 그리고 반드시 아래 두 라이브러리를 설치하셔야 됩니다. 파이썬 terminal로 가셔서 pip install request 와 pip install bs4를 해주십시오.

 - requests library : 페이지를 가져오기 위한 라이브러리

 - BeautifulSoap library : 가져온 웹페이지를 기반으로 사용자가 원하는 데이터를 추출할 수 있게 해주는 라이브러리

 자 그럼 코딩을 하겠습니다.

크롤링 코딩하기
크롤링 코딩하기

 

 (1) 필요한 함수 가져오기

 - from PyQt5.QtCore import * : 스레드 함수를 사용할 수 있게 가져옵니다.

 - from kiwoom import Kiwoom : 메타 클래스 기반 싱글턴 스크립트를 가져옵니다.(기초반 강의를 듣지 않으신 분들은 이해하기 어려운 부분입니다. 이 부분은 굳이 작성하지 않으셔도 됩니다.

  - from urllib.request import urlopen : 원하는 사이트를 열기 위한 함수입니다.

  - from bs4 import BeautifulSoup : 인터넷의 다양한 언어(HTML, XML 등 파일에서 원하는 데이터를 파싱(Parsing) 하는 라이브러리이다. 즉, 특정 사이트에 원하는 값을 가져오는 것이다.

 

 (2) 스레드 구성하기

 - 이 부분도 기초반 강의를 들이신 분들만 이해하는 부분입니다. 따라서 굳이 안 쓰셔도 됩니다. 부모 클래스의 GUI 사용을 할당받고 메타 클래스 기반 싱글턴 언어를 공유하기 위한 기본 과정입니다.

 - 기초반에서 상당히 많이 설명드렸기에 설명은 제외하겠습니다. [15강 링크]에서 확인하십시오.

 

 (3) 크롤링 하기

 - response = urlopen("http://adrinfo.kr/")  : 크롤링하고자 하는 사이트의 이름을 입력하고 urlopen 함수를 통해 모든 데이터를 가지고 옵니다.

 - soup = BeautifulSoup(response, "html.parser")   : 크롤링 사이트에서 가져온 값을(html) 파이썬 객체로 변환시킵니다. 이제 soup에서 원하는 객체(값)를 찾아낼 수 있습니다. 

 - 원하는 값을 찾아내기 위해서 크롬을 이용해 원하는 사이트에 들어가 F12를 눌러 개발자 모드로 들어갑니다. 그러면 아래 그림처럼 오른쪽에 html 코드를 확인할 수 있습니다.

개발자 모드(HTML 확인)
개발자 모드(HTML 확인)

 위의 그림을 보시면, html 찾기에 66.99를 쳐 넣으니 h2 태그의 card-title 아래 "66.99"가 숨어 있었습니다.

 - i = 0: 두 개의 h2 테크(코스피, 코스닥)가 있기 때문에 하나씩 증가시켜 두 값을 모두 가져오기 위한 조치입니다.

 - k = [0, 0] : 코스피, 코스닥의 ADR 값이 저장될 곳입니다.

 - for link in soup.select("he.card-title") : BeautifulSoup에서는 여러 가지 기능을 제공하는데 select 함수를 사용하면 조건과 일치하는 모든 객체들을 list로 반환해 줍니다. 즉, 코스피의 ADR 지표와, 코스닥의 ADR 지표를 list로 반환합니다. 그리고 반환된 값을 하나씩 link에 저장합니다.

 - a = link.text.strip() : link에 저장된 텍스트 값을 a로 가지고 온다. 이때. strip() 함수를 사용하여 공백을 제거한다.

 - k [i] = a [0:5]. strip() : a에 저장된 값을 5개(0, 1, 2, 3, 4) 가져와 k [i]에 저장합니다. i가 0일 때는 코스피, 1일 때는 코스닥과 동일합니다.

 - i = i + 1 : 코스닥의 연산을 위해 i를 0에서 1로 증가시킵니다.

 - self.k.kospi = float(k [0]) : k의 0열에 저장된 값을 불러옵니다. 이때, 코스피 ADR 정보가 저장되어 있습니다.

 - self.k.kosdac = float(k [1]) : k의 1열에 저장된 값을 불러옵니다. 이때, 코스닥 ADR 정보가 저장되어 있습니다.

 

위와 같이 코딩하면 우리는 원하는 값을 가져올 수 있습니다.

 

3. 요약

반응형

 크롤링의 개념과 코딩 방법에 대하여 설명드렸습니다. 코드는 그림으로 공개해 드렸고 중급반에서는 ctrl+c 할 수 있는 코드는 공개하지 않겠습니다. 중급반 정도면 충분히 코딩할 수 있다고 생각하며, 일단 그림으로 코드를 공개해 드렸으니 따라 하시면 되겠습니다.

 다음 강의에서는 크롤링한 값을 특정 창 또는 GUI에 전시하는 법을 알아보도록 하겠습니다.

반응형

.link_tit