본문 바로가기
python/금융데이터분석

python 증권데이터 분석 - 웹 스크래핑(웹 크롤링), HTML 예시, 한국거래소 상장법인목록 가져오기

by orangecode 2022. 12. 23.
728x90
웹 스크래핑(웹 크롤링)

웹 스크래핑(웹 크롤링)이란 웹페이지에서 자신이 원하는 데이터를 추출하는 기법을 말한다.

 

한국거래소 시장 정보, 한국은행 경제통계시스템, 공공 데이터포털  등 증권데이터를 비롯데 다양한 데이터를 엑셀 형태로 수집이 가능하다.

 

또한 네이버 금융, 다음금융 등 포털 사이트에서 증권 관련 데이터를 직접 웹 스크랩를 통해 정보를 수집할 수 있다.

 

한국거래소에서 제공하는 상장법인 목록과 네이버 금융 웹 스크래핑을 통해 데이터 분석을 해볼 것이다.

 

한국거래소 기업공시채널 상장법인목록 가져오기

 

한국거래소 기업공시채널(https://kind.krx.co.kr/main)의 '상장법인상세정보' → '상장법인목록' 이동

 

엑셀 파일을 다운로드 한다.

 

 

 

상장법인목록 EXCEL 파일인 '상장법인목록.xls'를  확인한다.

 

'상장법인목록.xls'의 확장자가 .xls 이지만, 실제 내용은 HTML이므로 Pandas의 read_excel()로 읽을 수 없다.

 

.xls 파일은 pandas의 read_html()함수를 이용하여 파일을 읽을 수 있다.

 

.xls 파일을 read_excel()함수로 읽고 싶다면 '상장법인목록.xls' 파일명을 '상장법인목록.xlsx' 확장자로 변경한 뒤 read_excel()함수를 이용하여 읽을 수 있다.

 

'상장법인목록.xls' 파일 읽어오기

import pandas as pd

# 한국거래소 상장법인목록 가져오기
krx_list = pd.read_html('C:\\Users\\kwonk\\Downloads\\개인 프로젝트\\juno1412-1\\증권데이터분석\\data_files\\상장법인목록.xls')
krx_list[0]

krx_list라는 변수에 상장법인목록.xls 파일을 확인할 수 있다

 

종목코드는 6자리 수로 표현되어야 하지만, 종목코드에서 0이 빠져있음을 확인할 수 있다.

 

map() 함수를 이용하여 6자리 수의 종목코드로 종목코드 데이터 전처리해준다. 

 

import pandas as pd

# 한국거래소 상장법인목록 가져오기
krx_list = pd.read_html('C:\\Users\\kwonk\\Downloads\\개인 프로젝트\\juno1412-1\\증권데이터분석\\data_files\\상장법인목록.xls')

# 종목코드 전처리
krx_list[0].종목코드 = krx_list[0].종목코드.map('{:06d}'.format)
krx_list[0]

6자리 종목코드에서 0을 포함한 종목코드로 변경하는 전처리 과정을  수행하였다.

 

 

URL을 이용해 인터넷 상에서 바로 파일 읽어오기

# 한국거래소 상장법인 목록 URL로 가져오기
import pandas as pd

# 한국거래소 상장법인목록 가져오기
krx_list = pd.read_html('https://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13')[0]


# 종목코드 전처리
krx_list.종목코드 = krx_list.종목코드.map('{:06d}'.format)
krx_list = krx_list.sort_values(by='종목코드')
krx_list

 

 

HTML 익히기

웹페이지는 JSP, ASP, PHP 등 다양한 언어로 작성할 수 있으나

웹브라우저에서는 최종적으로 HTML로 변환된 결과를 랜더링해서 표시하기 때문에

웹 스크래핑(웹크롤링)하려면 HTML을 기본적으로 알아야 한다.

 

HTML 기본 구조
HTML = HyperText Markup Language의 약자

 

- HyperText : 다른 문서를 연결하는 텍스트로 뉴스 제목을 클릭했을 때 본문페이지로 이동하는데, 뉴스 제목에 해당하는 부문이 HyperText이다.

 

- Markup : HTML에서 텍스트가 화면에서 어떻게 보여야하는지 정의하는 기법을 말한다.
예를 들어, <b>This is bold text.</b>라고 쓰면 텍스트가 bold체로 표시된다.

여기서 <b>는 여는 태그, </b>는 닫는 태그라고 한다.

 

<br>태그처럼 텍스트를 둘러싸지 않고 사용되는 태그도 있으나, 태그는 여는 태그 사용해도 괜찮지만,

브라우저 호환성을 고려하여 <br />을 사용해주는 것이 좋다.

 

 

HTML 주요 태그 리스트

태그 속성 의미
html   HTML 문서
head   문서 헤더
title   문서 제목
body text, background, bgcolor 문서 바디
h1, h2, h3   머리말(heading)
p   문단(paragraph)
br    줄바꿈(line break)
b   볼드체
i   이텔릭체
s   취소선(strike)
ol, ul type 순서 리스트, 비순서 리스트
li type 리스트 아이템
table width, border, cellpadding 테이블
tr align 테이블 행
th, td colspan 테이블 헤더, 테이블 데이터
a href, target 하이퍼링크
img src, width, height 이미지
<!--...-->   주석

HTML 예시

html example 예시

<html>
    <head>
        <title>This is title.</title> 
    </head>
    <body>
        <h1>This is heading1 text.</h1>
        <h2>This is heading2 text.</h2>
        <h3>This is heading3 text.</h3>
        <p>This is a paragraph.</p>
        This is plain text.<br /> 
        <b>This is bold text.</b><br />
        <i>This is Italic text.</i><br />
        <s>This is strike text.</s><br />
        <ol>
            <li>the first orderd list</li>
            <li>the second orderd list</li>
            <li>the third orderd list</li>
        </ol>
        <ul>
            <li>unorderd list</li>
            <li>unorderd list</li>
            <li>unorderd list</li>
        </ul>
        <table border=1>
            <tr>
                <th>table header 1</th>
                <th>table header 2</th>
                <th>table header 3</th>
            </tr>
            <tr>
                <td>table data 4</td>
                <td>table data 5</td>
                <td>table data 6</td>
            </tr>
            <tr>
                <td>table data 7</td>
                <td>table data 8</td>
                <td>table data 9</td>
            </tr>
        </table><br />

        <a href="https://www.python.org">Visit Python homepage!<br />
        <img src="https://www.python.org/static/img/python-logo.png" /></a>
    </body>
</html>

 

 

참고도서

http://www.yes24.com/Product/Goods/90578506

 

파이썬 증권 데이터 분석 - YES24

투자 기법과 프로그래밍 기술로 자신만의 퀀트 투자 시스템을 완성하라『파이썬 증권 데이터 분석』은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전

www.yes24.com

https://github.com/INVESTAR/StockAnalysisInPython

 

GitHub - INVESTAR/StockAnalysisInPython

Contribute to INVESTAR/StockAnalysisInPython development by creating an account on GitHub.

github.com

 

반응형

댓글