파이썬을 통해 증권 정보를 크롤링 하는 방법에 대해서는 여러 자료에서 찾아볼 수 있다. 하지만 내가 원하는 전 종목, 모든 항목에 대해서 한번에 크롤링 할 수 있는 자료를 찾는 건 쉽지 않았다. 어떻게 모든 종목에 대한 크롤링을 했는지 살펴보자.
블로그, 유튜브, 챗GPT 등 여러 군데에서 자료를 찾고 힘겹게 완성한 자료다. 먼저 흐름대로 코딩을 하고 이해하고 다음으로 함수화하여 최대한 간단하게 매크로 형식으로 만들었다.
처음부터 매크로 형태로 만들면 이해하기 어려우니 매크로 형태로 작성하기 전 코딩한 자료부터 보겠다.
코드를 작성하기 전 먼저 알아두어야 할 사전 정보부터 알아보고 다음 내용부터 코딩에 대한 부분을 들어가보도록 하겠다.
자료(페이지) 탐색
크롤링을 하기 위해서는 먼저 어떤 정보가 있는지 파악해야 한다. 네이버 증권을 검색 후 왼편의 메뉴 중 '시가총액'을 클릭하면 코스피 시가총액 순으로 종목을 볼 수 있다.
(1) 체크항목 확인
체크항목 중 거래량, 외국인비율, 상장주식수, 시가총액, PER, ROE가 기본 항목으로 체크되어 있는 것을 볼 수 있다. 또한 체크항목 외의 정보로는 N(순서), 종목명, 현재가, 전일비, 등략률, 액면가가 기본정보로 제공된다.
오른쪽 상단에 작은 글씨로 최대 6개 항목까지 설정 가능하다고 되어있다. 또 체크한 항목의 내용을 보기 위해서는 '적용하기' 버튼을 클릭해야 해당 정보가 보여진다.
지금 얘기하는 부분이 크롤링과 전혀 상관없어 보이지만 그렇지 않다. 이런 부분을 알아두어야 코드를 작성하는데 있어서 어떻게 구성해야 하는지 생각할 수 있다.
(2) 페이지 및 종목 정보
다음으로는 페이지 맨 아래 보면 페이지 번호가 나온다. 1, 2, 3, ... '맨뒤' 라는 버튼이 있다.
전체 코스피 종목수가 많기 때문에 가독성을 위해 페이지를 나눠둔 것으로 보인다. 현재 가장 마지막 페이지는 45번이고 종목수는 2,217이다. 여기서 보면 종목에는 ETF 종목까지 모두 포함되어 있는 것을 알 수 있다.
(3) 페이지 주소
윗 부분의 페이지 주소를 통해 결국 자료를 크롤링 하는데 중요한 부분이기 때문에 페이지 주소에 대해 파악해야 한다.
먼저 페이지 주소의 구성을 보면 시가총액 메뉴를 클릭 시 보이는 주소는 "https://finance.naver.com/sise/sise_market_sum.naver" 다음과 같이 보이며 아래 페이지 번호를 눌렀을 때는 "https://finance.naver.com/sise/sise_market_sum.naver?&page=1" 다음과 같이 변하는 것을 볼 수 있다.
코스닥 종목을 가져오기 위해서는 종목명 윗편에 보면 코스피, 코스닥으로 나눠져 있는데 코스닥을 클릭 후 페이지 번호를 눌러보면 "https://finance.naver.com/sise/sise_market_sum.naver?sosok=1&page=1" 다음과 같이 변하는 것을 볼 수 있다.
여기서 중점적으로 봐야하는 부분은 1) '?' 뒤의 sosok=0이면 코스피, 1이면 코스닥 종목의 페이지를 보여준다는 것이다. 다음으로 2) page=1 에서 숫자는 각 페이지 번호를 나타낸다.
이 두가지 변하는 정보를 가지고 향후에 자동으로 주소를 변경해가며 자료를 수집할 수 있다.
한가지 더 염두해둬야 할 점은 종목이 자주 변하지는 않으나 추가 상장, 상폐 등으로 변경될 수 있으니 가능하면 마지막 페이지 정보를 가져오는 방법으로 코드를 작성해야 한다는 것을 알고 있으면 좋다.
사전정보 없이 코드를 먼저 작성하려고 하면 막막하기도 하고, 내가 어떤 정보를 가져와야 하는지, 어떻게 구성해야 하는지 어렵다. 막상 시작해도 뭘해야 할지도 잘 모르겠고 말이다.
이정도까지로 크롤링에 대한 사전 정보를 알아보고 나머지는 코드를 작성하면서 추가로 알아보도록 하자.
'방구석코딩 > 주식 크롤링 분석' 카테고리의 다른 글
[파이썬] 주식 데이터 크롤링(6) - 웹 페이지 데이터 가져오기 (for문) (0) | 2024.07.12 |
---|---|
[파이썬] 주식 데이터 크롤링(5) - 웹 브라우저 체크박스 선택 (selenium) (0) | 2024.07.11 |
[파이썬] 주식 데이터 크롤링(4) - 웹 브라우저 체크박스 해제 (selenium) (0) | 2024.07.10 |
[파이썬] 주식 데이터 크롤링(3) - 웹 브라우저 자동 실행(webdriver) (0) | 2024.07.09 |
[파이썬] 증권 전 종목 크롤링(2) - 필요 패키지 (0) | 2024.07.08 |
댓글