뭐 빅데이터 책으로 공부하다가 데이터도 긁어올겸 python으로 현재 네이버 주식 시가총액창에 있는 데이터를 긁어오는 코드를 짜봤다.
이 데이터가 필요한지는 잘 모르겠지만 간만에 python으로 소스를 짜보았다.
#-*- coding:utf-8 -*-
import requests
import pandas as pd
from bs4 import BeautifulSoup
import datetime
def make_data(tag):
for i in range(0,len(tag)):
ttag = tag[i].find_all('td')
title.append(ttag[1].text)
now.append(ttag[2].text)
try:
updown = (ttag[3].find('img')['alt'])
if updown == "상승":
updown = "+"
else:
updown = "-"
except :
updown = "변동없음"
yest_rate.append(str(updown)+ttag[3].text.strip())
fluct_rate.append(ttag[4].text.strip())
face_value.append(ttag[5].text)
foreign.append(ttag[8].text)
volume.append(ttag[9].text)
per.append(ttag[10].text)
roe.append(ttag[11].text)
def get_tag(i):
req = requests.get("https://finance.naver.com/sise/sise_market_sum.nhn?sosok=0&page={}".format(i))
html = req.text
bs = BeautifulSoup(html,'html.parser')
tag = bs.find('tbody').find_all('tr', {'onmouseover':'mouseOver(this)'})
return tag
time_now = []
now_time = datetime.datetime.now()
time_ = now_time.strftime('%Y-%m-%d %H:%M:%S')
time_now.append(time_)
title = [] #종목
now = [] #현재가
yest_rate = [] #전일비
fluct_rate = [] #등락률
face_value = [] #액면가
volume = [] #거래량
foreign = [] #외국인비율
per = [] #PER
roe = [] #ROE
for i in range(1,33):
tag = get_tag(i)
make_data(tag)
df = pd.DataFrame(title)
df1 = pd.DataFrame(now)
df2 = pd.DataFrame(yest_rate)
df3 = pd.DataFrame(fluct_rate)
df4 = pd.DataFrame(face_value)
df5 = pd.DataFrame(volume)
df6 = pd.DataFrame(foreign)
df7 = pd.DataFrame(per)
df8 = pd.DataFrame(roe)
df9 = pd.DataFrame(time_now)
res = pd.concat([df,df1,df2,df3,df4,df5,df6,df7,df8,df9],axis=1)
res.columns = ['종목','현재가','전일비','등락률','액면가','거래량','외국인비율','PER','ROE','시간']
res.to_excel('{}.xlsx'.format(time_))
일단 이거 돌리면 현재 네이버에 떠있는 주식 종목, 현재가, 전일비, 등락률, 액면가, 거래량, 외국인비율, per, roe 정보를 가져오고 시간도 기록해준다.
이 정보들을 긁어와주는데 사람들이 무슨 하나하나 긁는거 같아서 만들어 보았다.
필요한 모듈은 requests, pandas, bs4, datetime인것 같다.
결과는 아래와 같이 나온다.
찾아보니 매일 주식 정보를 기록하시는 분들이 사용하시면 좋을 것 같다.