안녕하세요. 이번 시간에는 지난 시간의 이미지(사진) 다운받기에 이어 파일을 다운받아 보도록 하겠습니다. 이미지 다운과는 약간 다르지만, 크게 어렵지는 않으니 느긋하게 읽어보시면 쉽게 이해할 수 있을 겁니다. 그럼 시작하겠습니다.
주식 분석을 위한 시세 자료를 다운 받기 할 예정입니다.
이제까지는 import 뒤에 불러올 모듈명을 바로 적어 주었습니다. 그런데 아래 그림은 앞에 from 을 적어주고 import 뒤 모듈명을 적어 주었네요. 이는 추후에 클래스를 다룰때 보다 자세히 설명드려야 할 사항이므로 지금은 그냥 넘어가셔도 무방합니다. ▼
주식 관련 CSV(Comma Separated Value)파일을 찾아보았는데, 야후 파이낸스에 올라와 있더군요. 그래서 'finance.yahoo.com'으로 접속을 하였습니다.▼
구글의 시세를 확인해 보고자 'goog'를 입력하였습니다. 그러나 최근 구글이 'Alphabet'으로 지주회사 형식으로 구조를 개편하여 옆에 알파벳 이라고 나옵니다. ▼
Nov 25th, 2015. 구글의 주식 가격입니다. 왼쪽에 보면 'Historical Prices' 창이 있는데 거기를 클릭합니다.▼
보이는 바와 같이 시가,저가,고가, 종가, 거래량 등등 기본적인 자료가 테이블 형식으로 나타납니다. 여기에서 아래 보이는 Download to Spreadsheet 에 마우스 오른쪽 클릭을 하면 'Copy Link' 를 눌러 URL 만 클립보드로 복사를 합니다.▼
이렇게 클립보드에 상위의 데이터가 있는 URL을 아래 그림처럼 'google_stock_url' 이라는 변수에 저장을 시켜줍니다.▼
이제 데이터를 다운받기 위한 함수를 정의하도록 하겠습니다. 아래 그림처럼 함수명을 지정하고 parameter는 csv_url 하나만 받게 하였습니다.▼
전달된 csv_url을 request.urlopen 을 이용하여 열겠다는 의미입니다. 그 결과를 response 변수에 저장을 합니다.▼
이렇게 저장된 response를 읽어 csv 라는 변수에 다시 저장을 합니다.▼
변수 csv 에 저장된 값들은 문자(string)도 존재할 것이며, 숫자(number)도 상존할 것입니다. 그래서 문자든, 숫자든 모두 문자화(convert to string) 시켜지구 위한 str() 을 사용하고, 그 결과를 str_csv 변수에 저장을 합니다.▼
str_csv 에는 데이터들이 중구난방으로 들어있는데, 이를 가독성있게 정렬을 하기 위해 split() 이라는 메소드를 사용하여 개행(줄바꿈)이 일어나는 단위로 한 줄씩 lines 변수에 저장을 하게 합니다. 그러면 한줄의 데이터 이후 줄바뀜이 일어나고 또 한줄의 데이터.....이렇게 데이터가 정렬이 이루어 지게 됩니다.▼
이제 파일을 저장할 때, 저장될 파일명을 기술하기 위해 아래와 같이 dest_url 에 r'google.csv' 을 넣어줍니다. 여기서 앞에 'r' 을 붙여준 이유는 'raw'값을 의미합니다. raw: 날것, 그대로 라는 의미로 변화가 없다는 의미입니다.▼
dest_url에 있는 값으로 파일을 쓰기모드('w')로 열어서 fx에 넣어줍니다.▼
lines 에는 한줄 한줄씩 여러줄의 데이터가 있는데, 이를 반복문을 사용해서 한줄 씩 처리를 하게 할 예정입니다.▼
한줄의 데이터와 "\n"(개행 혹은 줄바꿈) 을 fx에 한줄 쓰겠다는 의미입니다. 그 결과 한줄의 데이터와 가장 뒷자리에 줄바꿈이 함께 자리잡게 됩니다. 이러한 작업을 lines 의 길이만큼 반복을 하게 하면 fx에는 모든 데이터가 한줄 씩 기록이 되게 될 것입니다.▼
파일을 열었으니 닫아야겠죠? fx.close()▼
함수 정의는 끝이 났습니다. 이제 이렇게 만들어 준 함수를 호출하여 실행을 시켜보겠습니다. 이 때 초반에 저장해 둔 google_stock_url 값을 함수의 인자로 넣어줍니다. 그럼 이 google_stock_url -> csv_url 값으로 전달이 되어 아래의 함수 명령순서대로 실행을 하게 될 것입니다.▼
네. 실행이 끝나고 에러 없이 종료가 되었네요. 그리고 왼편에 보니 google.csv 라는 파일이 하나 생성이 되어 있는게 보입니다.▼
google.csv 를 클릭해보니 finance.yahoo.com 에서 확인한 구글의 시세가 쭈욱 나타나는군요.▼
Comments
주식을 하시는 분들은 HTS(Home Trading System)에서 제공하는 툴만 잘 활용하셔도 충분할 것입니다. 그러나 제가 현재 하고 있는 방식은 국내 전종목 시세 및 재무제표 등등 모든 제반 데이터를 파이썬을 이용해서 수집 후 데이터 베이스로 저장을 시시각각 하게 하는 프로그램을 돌려놓고 있습니다. 이를 이용해서 R 이라고 하는 프로그램으로 분석을 하고, 또 다른 파이썬의 형태로 분석 및 예측이 자동으로 이루어지게 코딩을 해 둔 상황입니다. 이와 같은 작업을 하는데 기본 단계가 인터넷 상에 있는 수 많은 파일들을 핸들링 할 수 있는 단계라고 할 수 있습니다. 이해가 되지 않으시면 몇번 더 읽어 보시기 바랍니다. 이번 시간은 여기까지 하겠습니다. 수고하셨습니다.