네이버 금융에서 52주 베타 값을 확인해보면~~~
예전에 책을 보고 네이버 금융에서 주식 베타를 크롤링하는 코드를 사용했던 기억이 있는데,
html 구조가 바뀌었는지 돌아가지 않았다
그래서 직접 크롤링 코드를 짜봤다.
나중에 다시 오류가 나면 수정해야겠다
# 라이브러리 import
import numpy as np
import requests
from bs4 import BeautifulSoup
import time
from pykrx import stock
import pandas as pd
1. ticker 개수를 num으로 지정하여 DataFrame 형태로 beta 값 반환
def get_beta_all(date,num):
# 날짜 매개변수 없어도 되지만 있어야 조금 더 빨리 불러올 수 있음
tickers = stock.get_market_ticker_list(str(date))
# tickers = stock.get_market_ticker_list()
tickers = tickers[:num]
beta_lst= []
for number1 in tickers:
# 네이버 금융에서 개별 종목의 페이지는 url 마지막에 ticker가 붙는다.
url = 'https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd='+number1
res = requests.get(url)
res.raise_for_status()
soup = BeautifulSoup(res.text,'html.parser')
section = soup.find('tbody')
part = section.find_all('td',class_="num")
beta = part[5].get_text().strip()
beta_lst.append(beta)
time.sleep(1)
# break;
dt = pd.DataFrame({'beta':beta_lst})
dt.index = tickers
return dt
get_beta_all(20221028,10).T
2. 입력한 ticker에 대한 베타값 반환
- 여러 ticker 동시 입력 가능
- type을 df로 지정하면 DataFrame 형태로, list로 지정하면 beta 값만 담긴 list 반환
(default는 df)
def get_beta_one(*tick,type='df'):
beta_lst = []
for i in tick:
url = 'https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd='+i
res = requests.get(url)
# res.raise_for_status()
soup = BeautifulSoup(res.text,'html.parser')
section = soup.find('tbody')
part = section.find_all('td',class_="num")
beta = part[5].get_text().strip()
# print(beta)
beta_lst.append(beta)
time.sleep(1)
# break;
if type == 'list':
return beta_lst
if type == 'df':
return pd.DataFrame(beta_lst,index=tick,columns={'beta'})
get_beta_one('005930','035720')
get_beta_one('194700',type='list')
아마 두 번째 방법이 더 유용하게 쓰일 것 같다.
GitHub에서 확인하기
'🏷️Workplace > ANALYSIS' 카테고리의 다른 글
[RainflowCounting] reversals( ) (0) | 2023.10.17 |
---|---|
네이버금융 기업 실적 분석 데이터 크롤링 (2) | 2023.02.04 |
[크롤링&SQL] 할리스 매장 정보 크롤링 후 DB 저장 (0) | 2023.01.24 |
[크롤링] 할리스 커피 매장 정보 크롤링 (2) | 2023.01.24 |
[ETF]파이썬 시각화 (0) | 2022.11.17 |