ํ์ด์ฌ์ด ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์ธ๊ธฐ์๋ ์ด์ ๋ ์ธ์ด์ ๊ฐ๊ฒฐ์ฑ ๋ฟ๋ง ์๋๋ผ ๋ง๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๋ช ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ 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์์ ๋ณด์ค ์ ์์ต๋๋ค.