inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

[질문] 웹 크롤링으로 데이터 수집 시 데이터 병합이 안되는 문제

458

마루

작성한 질문수 7

1

안녕하세요.

선생님 강의 잘 듣고 있습니다.

강의를 들으면서 책을 보고 웹 크롤링으로 데이터를 다운 받아 dataframe으로 전환

최종 엑셀로 저장하는 코드를 공부 하고 있습니다.

그런데 크롤링은 되는데 최종 엑셀 저장 파일을 보면 맨 처음 페이지만 저장 되는데요

아래 코드에서 잘못된게 있을까요?

그리고 break문을 적으면 SyntaxError: 'break' outside loop

에러가 나와 주석처리 했습니다. 

제가 워낙 초보라 답변을 주실 수 있는지요?

감사합니다.

# from selenium import webdriver # browser = webdriver.Chrome("/Users/maru/Downloads/chromedriver") # browser.get("https://seibro.or.kr/websquare/control.jsp?w2xPath=/IPORTAL/user/company/BIP_CNTS01042V.xml&menuNo=286#") search_btn = browser.find_element_by_id("image1") search_btn.click() html = browser.page_source from bs4 import BeautifulSoup from html_table_parser import parser_functions as parser import pandas as pd soup = BeautifulSoup(html, "html.parser") table = soup.find("table", attrs ={"id" : "grid1_body_table"}) p = parser.make2d(table) df = pd.DataFrame(p[2:], columns=p[1]) df.head() import time import random from tqdm import tqdm prev_no = 0 prev_table = None for i in tqdm(range(0,200)): try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() def get_html(browser, cnt): if cnt >= 4: return -1, -1 html = browser.page_source soup = BeautifulSoup(html, "html.parser") cur_no = soup.find("a", sttrs = {"class" : "w2pageList_control_label w2pageList_label_selected"}) cur_no = cur_no.text table = soup.find("table", attrs={"id" : "grid1_body_table"}) if cur_no != prev_no and prev_table != table: return cur_no, table else: time.sleep(1) get_html(browser, cnt+1) cur_no, table = get_html(browser, 1) if cur_no == -1: print("\n종료. 테이블 정보가 바꾸지 않았습니다.") break p = parser.make2d(table) temp = pd.DataFrame(p[2:], columns=p[1]) df = pd.concat([df, temp], 0) prev_no = cur_no prev_table = html if cur_no == "95": print("\n 최종 페이지 도달") # break time.sleep(random.randrange(3, 5)) df.to_excel("stock_div.xlsx")

python numpy pandas 웹-크롤링 seaborn 웹 스크래핑 plotly matplotlib

답변 1

0

박조은

안녕하세요.

코드를 올려주실 때 인덴트가 되도록 올려주셔야 답변을 드릴 수 있을거 같아요.

파이썬은 들여쓰기에 따라 동작이 달라지기 때문에 위와 같이 올려주시면 어떤 부분이 잘못되었는지 알기가 어려워요.

질문해 주신 오류도 break 문이 들여쓰기 위치에 맞지 않아서 난 오류로 보입니다.

파이썬은 들여쓰기로 블록을 구분하기 때문에 해당 break 문의 위치가 맞는지 확인해 보세요.

0

brain0022

네 고맙습니다

cufflinks 버전문제로 iplot() 미실행

0

58

2

[수정요청]직접 수집한 주가 데이터로 시각화해보기

0

70

2

pd.read_html(url, encoding='cp949') 에러

0

95

2

fdr.StockListing('KRX') 문제 발생

0

181

2

주식 자동매매 프로그램 제작 관련 조언 부탁드립니다

0

457

1

concat 을 통한 데이터 프레임 합치기 에러 문의

0

118

2

한글폰트 관련해서 문의드립니다.

0

247

2

데이터프레임 칼럼명 문의 드립니다.

0

250

3

금융데이터 수집의 모든것

0

155

2

녹화시점과 현재시점 컬럼명이 변경이 많이 되었을까요?

0

202

2

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기 - 섹션1 [2/2]

0

182

1

Mac 환경에서 nbextensions 활성화 하는 방법

0

606

2

pd.concat(result.tolist()) 오류 문의

0

257

1

5.1 제약 데이터 수집 오류 해결

0

242

1

Table of contents 문의드립니다

0

222

2

concat을 통한 데이터프레임 합치기

0

560

2

Reindexing only valid with uniquely valued Index objects 오류 질문입니다.

0

499

1

데이터 비교시 데이터 불일치

0

420

1

dtype={"itemcode": np.object}) 을 dtype={"itemcode": object}) 으로 변경해야 하나요?

0

608

1

질문 : for문 풀어쓰기

0

501

1

파이참에서 Plotly 그래프 실행방법

0

1322

1

5.1 데이터프레임 병합(merge)

0

753

2

쥬피터노트북에서 실행파일 만들기

0

1460

1

주피터노트북 확장팩 설치가 안됩니다.

0

572

2