오늘은 간단하게 네이버 증권 페이지에서 현대차 주요 투자 지표를 크롤링하는 방법에 대해서 설명하고자 한다.
네이버 증권 사이트에서 특정 종목을 검색하면 오른쪽 상단에 아래와 같이 주요 지표들이 나오는데 오늘은 이것을 파이썬으로 크롤링 해보도록 하겠다. 코드는 어려울 것 하나도 없다.
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를 문제가 없을 경우 출력하면 아래와 같이 나올 것이다.
뭐 어려울 것 없는 굉장히 쉬운 코드였다. 어디다가 사용할 지는 잘 모르겠지만 그냥 크롤링 복습 차원에서 한번 해봤다.
'문송충의 코딩하기 > 파이썬 데이터 분석' 카테고리의 다른 글
파이썬으로 유튜브 슈카월드 검색 결과 가져오기 (0) | 2020.08.14 |
---|---|
파이썬으로 국내 성, 연령별 코로나 확진자 수 크롤링 (0) | 2020.07.27 |
공공데이터 API를 활용한 국민연금 분석하기 #1 With Python (0) | 2020.07.23 |
Dart 전자공시시스템 API를 통해 현대자동차 Data 가져오기 With Python #2 - 재무상태표 (1) | 2020.07.20 |
Dart 전자공시시스템 API를 통해 현대자동차 재무 Data 가져오기 With Python #1 - 손익계산서 (1) | 2020.07.16 |
댓글