커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
파이썬으로 주식데이터 만들기..
undefined주차
북마크
강*구
댓글
1
추천
0
조회수
10
조회수
10
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


안녕하세요..

스파르타코딩을 통하여 프로그램강좌를 연속수강하는 기회를 가졌습니다.

그덕분에 맘대로 만들수는 없지만 그래도 생각한것의 아주 조금이나마 이눈치저눈치 보면서 만들어 보기도 합니다.

본강좌를 학습하고 유트부의 관련 영상을 보니까 이제는 뭔가를 많이 아는 것처럼 혼자 고객를 끄떡일때가 많습니다.

그러다가 궁금증이 발생하였습니다.

저 설명은 선택을 이렇게 할때 한것인데, 선택을 바꿀때는 어떻게 만들어야지 하는 것입니다.

가령 https://finance.naver.com/sise/sise_market_sum.naver?sosok=0 에서 현재는 코스피만 나오도록 되어 있는데 코스닥 데이터를 만들때는 어떻게 코딩을 하여야 하는지 궁금합니다.

본질문에 교육과정안에 있는 내용은 아닙니다.

그렇지만 보 교육과정을 하다보니 지적호기심이 생겨 유투브 영상의 강사의 코딩을 똑같이 따라 복사해보았습니다.

그래서 최종결과까지 나오게 되었습니다.

그래서 새로운 결과물 [코스닥의 시세] 결과물을 만들고 싶어서 이렇게 문의요청드립니다.

부디 본과정과 관련이 없다고 무시하지 마시고 꼭 해결할 수 있도록 요청드립니다.




보고 계신 화면

스파르타 즉문즉답

전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.




import os

import pandas  as pd

from selenium import webdriver

from selenium.webdriver.common.by import By


browser=webdriver.Chrome()

browser.maximize_window()  # 창최대화


#1. 페이지 이동

url='https://finance.naver.com/sise/sise_market_sum.naver?&page='

browser.get(url)


#2.조회항목 초기화(체크되어있는 항목 해제)(12:03)

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

for checkbox in checkboxes:

    if checkbox.is_selected(): #체크된 상태라면

        checkbox.click() #클릭(체크해제)


#3. 조회항목 설정(원하는 항목)

items_to_select = ['영업이익','자산총계','매출액']

for checkbox in checkboxes:

    parent = checkbox.find_element(By.XPATH,'..')#부모 element를 찾게 되는것

    label = parent.find_element(By.TAG_NAME,'label')

    # print(lable.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,40): #1이상 40 미만 페이지 반복

    #사전작업 : 페이지 이동

    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


    #6. 파일저장

    f_name = 'sise.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
댓글 알림
나의얼굴