본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

네이버 증권 페이지에서 현대차 주요 투자 지표 가져오는 법 With Python

by 동장군님 2020. 7. 25.
728x90

오늘은 간단하게 네이버 증권 페이지에서 현대차 주요 투자 지표를 크롤링하는 방법에 대해서 설명하고자 한다.

네이버 증권 사이트에서 특정 종목을 검색하면 오른쪽 상단에 아래와 같이 주요 지표들이 나오는데 오늘은 이것을 파이썬으로 크롤링 해보도록 하겠다. 코드는 어려울 것 하나도 없다.

 

 


1. 종목 코드 가져오기

 

우선 가져오고자 하는 종목의 코드를 갖고 와야되는데 이거는 갓 Pandas의 도움만 있으면 쉽게 해결된다.

판다스로 아래 거래소 링크를 읽으면 국내 상장된 종목들의 정보를 다 데이터 프레임화 돼서 가져오게 된다.

import pandas as pd

df=pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download',header=0)[0]

 

여기서 우리는 회사명과 종목코드만 필요하기에 아래와 같이 해당 2컬럼만 필터링은 걸고 칼럼명을 다루기 쉽게 바꿔준다. 그러면 아래와 같은 결과물을 얻을 수 있다.

df=df[['회사명','종목코드']]
df.columns=['name','code']

다음으로 우리가 분석하고자 하는 종목은 항상 현대자동차이기 때문에 해당 테이블에서 현대자동차를 검색해서 코드를 가져오도록 하겠다. 그럼 Code라는 변수에 '005380' 값이 저장되어 있음을 확인할 수 있다.

def get_code(df,name):
    code=df.query("name=='{}'".format(name))['code'].to_string(index=False)
    return '00'+code.strip()

code=get_code(df,'현대자동차')

 

2. 네이버 증권 사이트에서 정보 긁어오기

그 다음 네이버 증권 사이트 URL에 현대자동차 Code를 합쳐서 정보를 긁어오도록 하겠다. 

import requests
from bs4 import BeautifulSoup as bs

url =f'https://finance.naver.com/item/main.nhn?code={code}'
res=requests.get(url)
obj=bs(res.content,'html.parser')
info=obj.find_all('div',{'id':'tab_con1'})[0].find_all('td')

 

여기서 내가 보고자 하는 지표는 시가총액 순위, 외국인소진율, per, 동일업종 per, eps, 시가배당률으로 이거만 하나하나 찾아서 뽑도록 하겠다. 마지막으로는 해당 지표를 데이터 프레임화 시켜서 잘 볼 수 있도록 만들겠다.

rank=info[1].text
foreigner=info[6].text
per=info[9].text.replace('\n','').replace('\t','').replace(' ','').split('l')[0]
eps=info[9].text.replace('\n','').replace('\t','').replace(' ','').split('l')[1]
market_per=info[13].text.replace('\n','').replace('\t','')
dividend_yield=info[12].text.replace('\n','').replace('\t','')

info_table=pd.DataFrame([rank,foreigner,per,market_per,eps,dividend_yield],
             index=['시가총액 순위','외국인 소진율','PER','동일업종PER','EPS','배당수익률'])
info_table.columns=['data']

 

info_table를 문제가 없을 경우 출력하면 아래와 같이 나올 것이다.

 

뭐 어려울 것 없는 굉장히 쉬운 코드였다. 어디다가 사용할 지는 잘 모르겠지만 그냥 크롤링 복습 차원에서 한번 해봤다.

728x90
반응형

댓글