1. 개요
- 네이버증권에서 시가총액순으로 기업정보 정렬시 기본 체크된 항목을 해제하고 다른 투자지표로 적용한 후 크롤링하기
2. 웹크로링 실행
(1) 라이브러리 설치
pip install pandas, selenium, lxml
* pandas – 테이블 형태의 데이터 조작과 분석
* selenium – 웹 브라우저에서 페이지 이동, 입력, 클릭 등 자동으로 실행
* lxml – XML, HTML 문서에서 구조화된 데이터 가공
(2) 라이브러리 불러오기
import os
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
(3) 데이터 요청 및 추출
browser = webdriver.Chrome()
url = "https://finance.naver.com/sise/sise_market_sum.naver?&page="
browser.get(url)
checkboxes = browser.find_elements(By.NAME, 'fieldIds')
for checkbox in checkboxes:
if checkbox.is_selected():
checkbox.click()
items_to_select = ['시가총액', '외국인비율', '보통주배당금', 'PER', 'PBR', '유보율']
for checkbox in checkboxes:
parent = checkbox.find_element(By.XPATH, '..')
label = parent.find_element(By.TAG_NAME, 'label')
if label.text in items_to_select:
checkbox.click()
btn_apply = browser.find_element(By.XPATH, '//a[@href="javascript:fieldSubmit()"]')
btn_apply.click()
for idx in range(1, 5):
browser.get(url + str(idx))
df = pd.read_html(browser.page_source)[1]
df.dropna(axis='index', how='all', inplace=True)
df.dropna(axis='columns', how='all', inplace=True)
if len(df) == 0:
break
print(df)
(4) CSV로 저장
f_name = '시가총액200.csv'
if os.path.exists(f_name):
df.to_csv(f_name, encoding="utf-8-sig", index=False, mode='a', header=False)
else:
df.to_csv(f_name, encoding="utf-8-sig", index=False)
print(f'{idx} 페이지 완료')
browser.quit()
3. 종합
import os
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
# 1.페이지 이동
url = "https://finance.naver.com/sise/sise_market_sum.naver?&page="
browser.get(url)
# 2. 기본 체크항목 초기화
checkboxes = browser.find_elements(By.NAME, 'fieldIds')
for checkbox in checkboxes:
if checkbox.is_selected():
checkbox.click()
# 3. 조회항목 설정
items_to_select = ['시가총액', '외국인비율', '보통주배당금', 'PER', 'PBR', '유보율']
for checkbox in checkboxes:
parent = checkbox.find_element(By.XPATH, '..')
label = parent.find_element(By.TAG_NAME, 'label')
# print(label.text)
if label.text in items_to_select:
checkbox.click()
# 4. 적용하기 클릭
btn_apply = browser.find_element(By.XPATH, '//a[@href="javascript:fieldSubmit()"]')
btn_apply.click()
for idx in range(1, 5):
browser.get(url + str(idx))
# 5. 데이터 추출
df = pd.read_html(browser.page_source)[1]
df.dropna(axis='index', how='all', inplace=True)
df.dropna(axis='columns', how='all', inplace=True)
if len(df) == 0:
break
# print(df)
# 6. 파일저장
f_name = '시가총액200.csv'
if os.path.exists(f_name):
df.to_csv(f_name, encoding="utf-8-sig", index=False, mode='a', header=False)
else:
df.to_csv(f_name, encoding="utf-8-sig", index=False)
print(f'{idx} 페이지 완료')
browser.quit()
* 참고 – 유튜브<나도코딩> → 주식정보 크롤링하기
'개발 > 파이썬' 카테고리의 다른 글
웹크롤링_네이버증권 배당 기업정보 (0) | 2024.06.09 |
---|---|
웹크롤링_네이버증권 시가총액순 기업정보 (0) | 2024.06.09 |
웹크롤링_개요 (0) | 2024.06.09 |
비주얼 스튜디오(Visual Studio) 설치 및 실행 (0) | 2024.06.09 |