본문 바로가기

코딩

파이썬으로 주식 정보 스크래핑하기

반응형

그 원래는 R에서 만들었던 매매기법 이리저리 시뮬레이션해보려고 했는데, 어느 주식으로 실험하지? 하는 생각이 들었고, 먼저 주식부터 골라보자~ 하는 생각 + 파이썬도 공부해야지 하는 마음이 모여 이리로 튀어버렸다.

 

그래서 파이썬으로 네이버 금융의 데이터를 크롤링...이 아니고 스크래핑해 보았다. 크롤링은 뭐고 스크래핑은 뭐냐?

 

웹 크롤링은 검색엔진이 하는 것 그 자체인데 웹 페이지들을 체계적으로 돌아다니면서 보고, 인덱싱 하면서 정보와 URL 등을 얻어온다. 주로 구글, 네이버 등 검색 엔진 회사에서 하는 일이 크롤링이다.

 

웹 스크래핑은  다른 말로 하면 웹 데이터 추출이다. 주가정보 등 특정 데이터를 수집하기 위해 페이지를 보고, 데이터를 얻어오는 과정이 웹 스크래핑이라고 할 수 있겠다.

 

페이지의 HTML구조를 보고 특정 데이터만을 얻어오려는 목적을 가진 이 활동은 그래서 스크래핑이 되는 것!이다.

 

주로 R만 사용해왔기 때문에 파이썬을 사용하려니 처음에는 상당히 헷갈리는 부분들이 많았다.

R에서 맨날 쓰던 파이프 연산이나(아니 Ctrl + m을 눌렀는데 암것도 안 나와) []를 이용해서 데이터를 빼 오거나 열 순서 바꾸거나 하는 간단한 작업들이 턱턱 막히니까 손이 덜덜 떨리더라고요...

"난 똥멍청이야 ㅠㅠ" 하는 생각이 절로 들음 ㅠㅠ

 

우선 스크래핑하기 전에 꼭 필요한 라이브러리들이 있다.

라이브러리 설치는 pip install 라이브러리 하고 명령어를 터미널에 입력해도 되고, 파이참을 쓴다면

File - Settings - Project - Python interpreter 메뉴로 들어가서 +를 클릭하여 검색하여 추가할 수 있다.

 

Request

설명: https://docs.python-requests.org/en/latest/

 

Requests: HTTP for Humans™ — Requests 2.27.1 documentation

Requests: HTTP for Humans™ Release v2.27.1. (Installation) Requests is an elegant and simple HTTP library for Python, built for human beings. Behold, the power of Requests: >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.

docs.python-requests.org

인간들을 위해 만들어진 HTTP 라이브러리이다. 우리에게 HTTP/1.1 요청을 매우 쉽게 보낼 수 있게 해 준다. URL에 쿼리 문자열을 수동으로 추가하거나 POST 데이터를 형식 인코딩할 필요가 없고, 연결 유지 및 HTTP 연결 풀링은 urllib3 를 사용하여 100% 자동으로 이루어진다고 설명서에 쓰여 있다.

우리가 특정 페이지에서 정보를 얻기 위해 파이썬이 HTTP요청을 보낼 수 있게 해 주는 패키지인 샘이다.

 

 

BeautifulSoup4:

설명: https://beautiful-soup-4.readthedocs.io/en/latest/

 

Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation

Non-pretty printing If you just want a string, with no fancy formatting, you can call unicode() or str() on a BeautifulSoup object, or a Tag within it: str(soup) # ' I linked to example.com ' unicode(soup.a) # u' I linked to example.com ' The str() functio

beautiful-soup-4.readthedocs.io

 HTML과 XML 파일들에서 데이터를 쉽게 읽어올 수 있게 해 주는 라이브러리이다. 크롤링이나 스크래핑할때 아주 자주 쓰인다고 한다.

 

lxml

설명:https://lxml.de/

 

lxml - Processing XML and HTML with Python

lxml is the most feature-rich and easy-to-use library for processing XML and HTML in the Python language. Introduction The lxml XML toolkit is a Pythonic binding for the C libraries libxml2 and libxslt. It is unique in that it combines the speed and XML fe

lxml.de

 

HTML이나 XML 데이터를 읽어오는 데에 parser가 필요한데, lxml은 파이썬에서 위와 같은 파일들을 쉽게 다룰 수 있게 해 주는 parser 역할의 라이브러리이다.

 

 

위 라이브러리들이 웹 스크래핑에 필요한 라이브러리들이고, 다음 파이썬에서 데이터를 처리하는데 꼭 필요한 라이브러리들이다. 바로 Pandas와 NumPy. 아나콘다에서 사용한다면 기본으로 내장되어 있으나, 파이참을 사용한다면 설치해야한다.

 

Pandas 

공식:https://pandas.pydata.org/

 

pandas - Python Data Analysis Library

pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!

pandas.pydata.org

Panel Data 해서 pandas인데, 정작 panel data는 이제 지원하지 않는다. R에서처럼 데이터프레임 구조를 사용하려면 필요한 라이브러리이다. 

"칼럼 하나는 시리즈, 시리즈가 모이면 데이터프레임"의 구조로 데이터를 다룰 수 있게 해 준다.

 

NumPy

공식:https://numpy.org/

 

NumPy

Powerful N-dimensional arrays Fast and versatile, the NumPy vectorization, indexing, and broadcasting concepts are the de-facto standards of array computing today. Numerical computing tools NumPy offers comprehensive mathematical functions, random number g

numpy.org

Numerical Python 해서 NumPy. 고성능의 수치 계산을 위한 라이브러리로 벡터 및 행렬 연산 등 행렬로 데이터를 계산해준다.

 

파이썬 인터프리터와 위의 패키지들이 준비 되었다면, 이제 스크래핑을 하러 가 보자!

 

 

 

반응형