본문 바로가기
코딩 공부/python

Python으로 웹 데이터 스크래핑하기

by Camel_coding_food 2022. 2. 11.
반응형

 이번에는 python 을 이용한 웹스크래핑을 알아보겠습니다.

국내 주식 자동매매를 목표로 하므로 국내 주식 데이터를 가져오겠습니다.

 

일단 한국 거래소 기업공시 채널에서 상장 법인 목록을 가져오겠습니다.

 

상장법인목록.xls
0.89MB

2022-02-11 오후 4:31 기준 파일입니다.

 

파이썬으로 이 파일 정보를 읽어주려면

팬더스의 read_html() 내장 함수와 html5lib이 필요합니다.

 

팬더스 설치는 python 카테고리의 첫번째 글을 읽어보시길 바랍니다.

html5lib은 pip install html5lib을 cmd에 입력해주시면 됩니다.

 

 

 

윈도우 검색창에 '상장법인목록' 을 입력해줍니다.

 

여기서 파일 위치를 복사합니다.


 

이제 코드를 작성해보겠습니다.

 

cmd 창에서 아나콘다 가상환경을 켜고 파이썬을 실행해줘야합니다.

 

activate base
#아나콘다가 깔려있다면 기본으로 설정되는 가상환경 이름이 base 입니다.
#이름이 다르다면 그 이름을 activate 뒤에 입력해주면 됩니다.
#입력 후 엔터

python
#입력 후 엔터

 

여기서 >>> 이런 기호가 뜨면 이어서 코드를 작성해줍니다.

 

import pandas as pd
#저번 글에서 알아보았습니다. pandas 모듈을 pd로 별명 짓는거죠.

krx_list = pd.read_html('C:/Users/chohjender/Downloads/상장법인목록.xls')
#pd(pandas 모듈)내의 read_html() 함수를 이용합니다.
#경로 복사 후 붙여넣기하면 간혹가다가 이동경로 사이사이 \ 기호가 있을 수 있습니다.
#이럴때는 모두 /로 바꿔주셔야 오류가 발생하지 않습니다.

 

다음에 krx_list[0] 을 입력한 후 엔터를 누릅니다

 

>>> import pandas as pd
>>> krx_list[0]
           회사명    종목코드                                 업종  ...      대표자명                          홈페이지     지역
0        나래나노텍  137080                      특수 목적용 기계 제조업  ...       정좌진    http://www.naraenano.co.kr    경기도
1          아셈스  136410                         플라스틱제품 제조업  ...       장지상             http://assems.com  부산광역시
2          스코넥  276040                     소프트웨어 개발 및 공급업  ...       황대실        http://www.skonec.com/  서울특별시
3       이지트로닉스  377330  전동기, 발전기 및 전기 변환 · 공급 · 제어 장치 제조업  ...       강찬호                           NaN    경기도       
4     LG에너지솔루션  373220                     일차전지 및 축전지 제조업  ...       권영수                           NaN  서울특별시
...        ...     ...                                ...  ...       ...                           ...    ...
2486    CJ대한통운     120                          도로 화물 운송업  ...       강신호    http://www.cjlogistics.com  서울특별시
2487     메리츠화재      60                                보험업  ...       김용범     http://www.meritzfire.com  서울특별시
2488        경방      50                             종합 소매업  ...    김준, 김담    http://www.kyungbang.co.kr  서울특별시
2489     유수홀딩스     700                회사 본부 및 경영 컨설팅 서비스업  ...       송영규  http://www.eusu-holdings.com  서울특별시
2490  한진중공업홀딩스    3480                  연료용 가스 제조 및 배관공급업  ...  조남호, 조원국  http://www.hhic-holdings.com    경기도

[2491 rows x 9 columns]

 

이런식으로 출력되면 정상적으로 작동된겁니다!

 

출력된 종목코드를 잘 보시면 001390 과 같은 종목코드가

1390 로 표시됩니다.

 

후에 종목코드를 이용하므로 원래 코드 그대로 받아오는것이 좋습니다.

 

이를 위한 코드를 작성해보겠습니다.

 

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

 

그럼 정상적으로 데이터를 엑셀 파일에서 받아옵니다.

 

 


이렇게 파일로 받아오는 방법을 알아보았습니다.

 

하지만 이렇게 하면 사이트에 들어가 파일을 일일이 다운로드 한 후

 

파일의 위치를 복사해 코드를 작성해야하는 번거로움이 있습니다.

 

이를 해결하기 위해 사이트 자체에서 데이터를 뽑아오는 방법이 있습니다.

 

다음 글에서 알아보겠습니다.

 

찾아와주셔서 감사합니다~.

반응형

댓글