뭐 빅데이터 책으로 공부하다가 데이터도 긁어올겸 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인것 같다.

결과는 아래와 같이 나온다. 

찾아보니 매일 주식 정보를 기록하시는 분들이 사용하시면 좋을 것 같다.

+ Recent posts