지난번 포스트에 이어서 이번에는 ROA를 웹에서 가져오는 방법을 기록하겠습니다.
지난번 포스트는 아래 링크를 참고하세요 ↓
2021.05.26 - [파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기
requests 모듈을 이용해서 에프엔가이드에서 제공하는 ROA를 가져오겠습니다.
code 명과 가져올 시점(해당 분기 또는 사업보고시점)을 파라미터로 넣어주면 ROA를 가져오는 과정입니다.
ROA를 가져오는 김에 ROE도 함께 불러오도록 하겠습니다.
url = 'https://comp.fnguide.com/SVO2/ASP/SVD_FinanceRatio.asp?pGB=1&gicode=' + code + \
'&cID=&MenuYn=Y&ReportGB=&NewMenuID=104&stkGb=701'
에프엔가이드에 가시면 기업 재무비율을 볼 수 있는 페이지가 있습니다. 페이지 주소를 보면 코드가 'A000000' 이런식으로 들어가는 부분이 있는데, 이 코드명을 기준으로 페이지가 변경됩니다.
저는 이것을 이용해서 크롤링을 했습니다. 모든 종목코드를 하나씩 넣어서 표시되는 ROA를 가져와서 데이터프레임으로 만들었습니다.
fr_page = requests.get(url)
위에 url 주소를 가져와서 fr_page 변수에 담습니다.
fr_tables = pd.read_html(fr_page.text)
Beautifulsoup을 쓰지 않더라도 판다스에서 자체 제공하는 파싱 모듈이 있습니다. read_html을 써서 여러 테이블을 가져옵니다.
temp_df = fr_tables[0]
테이블이 2개가 나오는데, 첫번째 테이블을 가져왔습니다.
temp_df = temp_df.set_index(temp_df.columns[0])
실제 에프엔가이드에서 보면 위와 같이 테이블이 보이지만, 파이썬으로 가져와 보면 'ROA계산에 참여한 계정 펼치기'로 나옵니다. 각각의 'ROA계산..', 'ROE계산..' 컬럼을 인덱스로 설정하였습니다.
temp_df = temp_df.loc[['ROA계산에 참여한 계정 펼치기', 'ROE계산에 참여한 계정 펼치기']]
필요한 행(row)만 가져옵니다.
temp_df.index = ['ROA', 'ROE']
인덱스명을 'ROA', 'ROE'라고 적어줍니다.
temp_df = pd.DataFrame({code : temp_df[year]})
종목코드를 넣고, 가져올 시점(분기, 사업보고)의 컬럼을 가져와서 데이터프레임을 만듭니다.
temp_df = temp_df.transpose()
종목코드로 데이터프레임을 계속 추가해야 하기 때문에 행과 열의 위치를 바꿔줍니다.
return temp_df
temp_df를 반환합니다.
다음포스트는 이렇게 만든 종목코드와 PER를 가져오는 함수. 그리고 이번 ROA를 가져오는 함수를 이용해서 전 종목의 데이터프레임을 만든 다음 마법의 공식을 통해 정렬하는 과정에 대해서 기록하겠습니다.
2021.05.28 - [파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기 3 - ROA, PER의 순위를 매겨서 최종순위 정렬하기
CAGR(연복리 수익률) 30%를 목표로 하는 파이썬 퀀트투자법이 궁금하시다면 아래 링크를 클릭해 보시기 바랍니다.
2021.11.21 - [집구석 강의/파이썬 퀀트투자 쉽게하기] - 파이썬 퀀트투자 쉽게하기 - 1. 들어가는 글
'파이썬(Python) > 마법의 공식' 카테고리의 다른 글
파이썬 마법의 공식 - 1. 시작하는 글 (2) | 2022.06.12 |
---|---|
마법의 공식 파이썬 코드 (0) | 2021.12.12 |
(업데이트) 파이썬으로 마법의 공식 구현하기 4 - 전체 코드 (파이썬 코드파일 공유) (9) | 2021.05.29 |
파이썬으로 마법의 공식 구현하기 3 - ROA, PER의 순위를 매겨서 최종순위 정렬하기 (0) | 2021.05.28 |
파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기 (2) | 2021.05.26 |
댓글