[kr-dev] 파이썬 패키지를 이용한 초간단 웹스크래핑
파이썬이 다른 언어에 비해 인기있는 이유는 언어의 간결성 뿐만 아니라 막강한 라이브러리가 가득하기 때문입니다.
유명한 라이브러리로는 Pandas라는 데이터 분석용 패키지가 있는데, SAS나 R과 같은 통계 툴에 버금가는 수준입니다.
이번에 소개해드리려고 하는 라이브러리는 Selenium이라는 웹스크래핑을 위한 패키지인데, 웹사이트에 접속하여 정보를 다운로드 받기 위해 소켓을 접속하거나 http request를 보내서 응답을 받고 하는 프로그래밍적인 요소를 아예 날려버림으로써 편의성을 극대화한 패키지입니다.
쉽게 설명을 드리면, 파이어폭스나 크롬 브라우저를 파이썬에서 실행시킨 후 브라우저 화면에 보이는 정보를 마치 변수처럼 가져다 쓸 수 있는 방법입니다.
이를 위해서는 먼저 selenium 패키지를 설치합니다. python의 패키지 설치 명령을 다음과 같습니다.
pip install selenium
그 다음으로 selenium에서 python과 브라우저를 연결하는 webdriver라는 프로그램을 다운로드 받아 파이썬 실행파일이 있는 폴더에 복사해 둡니다.
가장 많이 쓴느 크롬 브라우저의 webdriver 다운로드 주소는 아래와 같습니다.
https://sites.google.com/a/chromium.org/chromedriver/downloads
이것으로 웹사이트의 정보를 다운로드 받을 준비는 끝났고, 다음과 같은 한 줄의 명령어를 통해 크롬 브라우저에 보이는 정보를 그대로 이용할 수 있습니다.
driver.page_source
심지어 브라우저가 켜져있기 때문에 웹사이트의 로그인이나 원하는 페이지로 이동이 자유로우며, 크롬에서 이용할 수 있는 각종 플러그인을 설치하여 적용할 수도 있습니다.
# 셀레니움 페키지 중에 webdriver 클래스를 가져옵니다.
from selenium import webdriver
# driver변수에 webdriver를 연결합니다.
driver = webdriver.Chrome('chromedriver.exe')
# 원하는 url로 이동합니다. 여기에서는 업빗 투자내역 화면 이동합니다.
driver.get('https://upbit.com/investments/balance')
여기까지가 브라우저를 webdriver 변수와 동기화 시킨 작업입니다.
이후 driver.page_source 변수에는 현재 보이는 사이트의 정보가 그대로 들어있으며, beautiful soup등의 라이브러리를 통해 페이지 내의 정보를 파싱해서 사용할 수 있습니다.
from bs4 import BeautifulSoup
soup = BeautifulSoup(driver.page_source, 'html.parser')
coins = soup.find_all('tr')
for coin in coins:
코인 = coin.find(class_ = 'tit').strong.text
단위 = coin.find(class_ = 'tit').i.text
row = coin.find_all('td')
보유수량 = float(row[0].text.split()[0].replace(',', ''))
매수평균가 = int(row[1].text.split()[0].replace(',', ''))
매수금액 = int(row[2].text.split()[0].replace(',', ''))
평가금액 = int(row[3].text.split()[0].replace(',', ''))
col = row[4].find_all('span')
평가손익율 = float(col[0].text.split()[0])
평가손익 = int(col[1].text.split()[0].replace(',', ''))
print(코인, 단위, 보유수량, 매수평균가, 매수금액, 평가금액, 평가손익율, 평가손익)
이틀에 걸쳐 거래소 사이트의 정보를 다운로드 받고 그 안에서 원하는 데이터를 추출해 보았습니다.
앞으로 거래소에서 받은 정보를 이용하여 트레이딩에 도움이 될 만한 분석을 해보겠습니다.
유용하셨다면 추천 한방 부탁드립니다^^
※ 파이썬을 이용한 투자 포스팅은 #kr-systemtrading에서 보실 수 있습니다.
잘 봤습니다^^ 근데 기초 지식이 없어서인지 공부를 좀 더 해야 겠습니다^^
안녕하세요
저에게 정말 도움이 되는 정보 같습니다.
참고가 많이 될 것 같습니다.
내공의 공유, 감사드립니다.