본문 바로가기
IT 프로그래밍/IT기기 이용

파이썬 주식정보 크롤링 하기(네이버 증권 페이지 이용하여 데이터 가져오기) [step2]

by Jango_infoinno 2023. 3. 16.

안녕하세요! 파이썬으로 주식정보 크롤링 하기 2번째!

오늘 부터는 코딩을 하려고 합니다.

페이지를 가져와서 자동으로 켜고, 체크박스를 내가 원하는 것 으로 체크하는 방법을 알아 보겠습니다.

 

 

 

이제 파이썬으로 만들어 볼까요?

저는 터미널에 계속 입력하면서 입력하는 내용을 기록해둘 파이썬 파일을 만들어 줬습니다.

 

명령어에 python을 입력해 줍니다.

그리고

import pandas as pd #데이터 조작,분석하기 위한 라이브러리

from selenium import webdriver #selenium 페이지 자동화 가능하게 해주는 도구 , webdriver 웹 드라이버 로드하는 모듈

from selenium.webdriver.common.by import By #By Selenium 에서 요소를 찾는 방법을 지정하는 열거형 클래스

#Selenium을 사용하여 웹 페이지를 자동화하고, 그 결과를 Pandas 데이터프레임으로 변환하여 데이터를 쉽게 처리할 수 있도록 하는 것을 목적으로 합니다.

파일에 적어놓고 복사해서 터미널에서 우클릭!

1. 페이지를 이동해서 가져와야 하니 페이지 이동하는 명령을 해 봅시다.

다음으로 가져올 데이터가 있는 사이트 url 을 가져옵니다.

네이버 증권 -> 시가총액 페이지

>>> url = 'https://finance.naver.com/sise/sise_market_sum.naver'

터미널에 입력해 줍니다.

그리고 바로

browser = webdriver.Chrome()

# Chrome 드라이버를 사용하여 웹 브라우저를 제어하기 위한 browser 객체를 생성하는 코드를 입력해 줍니다.

>>> browser.get(url) #url에 대한 웹 페이지를 열고, 브라우저의 현재 페이지를 해당 페이지로 이동

 

2. 화면을 보니 체크가 되어 있습니다. 체크를 모두 해제해 볼까요?

화면에 조회 항목을 초기화 하기 위해서 (체크 해제 코드)

checkboxes = browser.find_elements(By.NAME,'fieldIds')

#By.NAME을 사용하여 웹 페이지에서 fieldIds라는 이름을 가진 모든 체크박스를 찾습니다

for checkbox in checkboxs:

#checkboxes 리스트에 저장된 각 체크박스를 하나씩 반복하며, 해당 체크박스가 선택되어 있는지 확인

if checkbox.is_selectied():

# 해당 체크박스가 선택되어 있는지 여부를 확인

checkbox.click()

#만약 체크박스가 선택되어 있다면, checkbox.click() 코드를 사용하여 체크박스를 선택 해제

파이선파일에 입력 -> 터미널에 우클릭(복붙)

3. 조회 항목 체크해 볼까요?

items_to_select = ['영업이익(억)', '자산통계(억), '매출액(억)']

여기서 html 개발자 모드를 보면 (억) 은 다른 레이블로 되어 있습니다.

떄문에 items_to_select = ['영업이익', '자산통계', '매출액']

으로 작성하겠습니다.

items_to_select = ['영업이익', '자산계', '매출액'] #리스트 형태로, 웹 페이지에서 선택하려는 체크박스의 레이블 텍스트를 저장

for checkbox in checkboxes: #리스트에 저장된 각 체크박스를 하나씩 반복하며, 해당 체크박스의 부모 요소를 찾기

parent = checkbox.find_element(By.XPATH,'..')

#find_element(By.XPATH, '..') 코드를 사용하여 부모 요소를 찾기 , '..' 현재 요소의 부모 요소를 나타내는 XPath 표현식

label = parent.find_element(By.TAG_NA기ME,'label')

#label 태그를 찾기

터미널에 입력

그리고

print(label.text)를 쳐보면

이렇게 나옵니다.

print(label.text)는 확인해 보기 위해서 적은거라서 확인만 해 보고 지워줍니다.

아까 코드 체크박스의 부모요소를 확인하는 반복문 안에 젤마지막에 추가로

if label.text in items_to_select:

checkbox.click()

을 추가해 줍니다.

제가 원하던 대로 체크가 되었습니다.

다음은 적용하기를 눌러야 그대로 리스트가 좍 정렬됩니다.

적용하기를 누르려면 웹페이지의 개발자도구에 들어가야 합니다.

이렇게 나오면

1) 밑에 사진과 같이 빨간색으로 표시된 부분을 클릭하고

2) 적용하기 버튼에 마우스를 가져가면 그부분에 있는 코드를 확인 가능합니다.

거기서 js 코드를 가져와야 파이썬이 자동으로 눌러줄 수 있습니다.

href = "javascript:fieldSubmi()" 이 부분을 복사해서

btn_apply = browser.find_element(By.XPATH, '//a[@href = "javascript:fieldSubmi()"]')

btn_apply.click()

find_element 함수는 지정된 조건을 충족하는 첫 번째 요소를 반환

//a[@href = "javascript:fieldSubmi()"]를 사용하여 href 속성 값이 "javascript:fieldSubmi()"인 a 태그 요소를 찾기

btn_apply 객체를 클릭하면 브라우저에서 javascript:fieldSubmi() 함수가 실행됨

이렇게 입력 합니다.

이렇게 매출액, 자산총계, 영업이익 세개가 나오도록 적용된 것을 볼 수 있습니다.

 

[참고영상: https://youtu.be/ZDh1C7qw0Rs]

반응형

댓글