inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Watch Me Code: 주린이를 위한 파이썬 데이터 분석

개별 종목 수집하기: FinanceDataReader와 Pandas 내장함수를 활용한 주가 데이터 수집

pd.read_html(url) 시 에러가 납니다

5545

핫산

작성한 질문수 7

0

아래와 같이 코드 실행 시 에러가 납니다

pd.read_html(url) 부분입니다

ValueError                                Traceback (most recent call last)
<ipython-input-28-5d8f83db45ac> in <module>()
----> 1 pd.read_html(url)

5 frames
/usr/local/lib/python3.6/dist-packages/pandas/io/html.py in _parse_tables(self, doc, match, attrs)
    545 
    546         if not tables:
--> 547             raise ValueError("No tables found")
    548 
    549         result = []

python pandas numpy

답변 1

1

멀티캠퍼스

판다스 내장함수인 read_html의 경우, 읽어올 html 문서 내에 <table> 태그가 있어야 수집이 가능합니다.

위에서 설정하신 url 변수를 참조하시어, 마우스 우클릭 > 검사 (혹은 Inspect)를 눌렀을 때 <table>태그가 나오는 지 확인해보시기 바랍니다 =)

0

핫산

table 코드가 있는데도 그렇습니다.

0

멀티캠퍼스

학습자님, 강의 원작자인 박조은 강사님께 해당 사항을 문의드려
관련 오류를 해결 / 강의 자료에 반영 완료하였습니다.
라이브 강의 이후 네이버 일별 시세 페이지가 변경이 되어 일부 오류가 발생한 것으로 보입니다.
학습에 지장을 드려 정말 죄송합니다.

라이브 강의 이후 변경사항

  • 네이버 증권 일별 시세의 웹페이지가 변경되어 기존의 방법으로는 불러올 수 없습니다.

  • 일별 시세 페이지에서 브라우저가 아닐 때 응답을 하지 않기 때문인데 이 때 requests 라는 라이브러리를 통해 HTTP 요청을 보내고 웹사이트의 소스코드를 받아와서 table 태그를 찾는 방법으로 받아올 수 있습니다.

  • 아래의 코드를 보면 requests를 통해 HTTP 통신을 보내고 beautifulsoup을 통해 HTML 페이지 내에서 table 태그를 찾습니다.

  • table 태그를 read_html로 불러오면 판다스의 데이터프레임으로 읽어올 수 있습니다.

 
 

requests를 통한 HTTP 요청

# 일별 시세 페이지를 읽어 올 때 브라우저가 아니면 응답을 하지 않기 때문에 브라우저 인 것 처럼 요청을 보냅니다.
# 응답으로 HTML 페이지 전체를 받아옵니다.
import requests

headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'}

response = requests.get(url, headers=headers)
 

BeautifulSoup 을 통한 table 태그 찾기

# BeautifulSoup 을 통해 html 페이지 내의 table 태그를 찾습니다.
from bs4 import BeautifulSoup as bs

html = bs(response.text, "lxml")
html_table = html.select("table")
len(html_table)
 
# html에서 찾은 table 태그를 pandas 로 읽어옵니다.
table = pd.read_html(str(html_table))
table[0].dropna()

페이지별 데이터 수집 함수 만들기

def get_day_list(item_code, page_no):
"""
일자별 시세를 페이지별로 수집
"""
url = f"https://finance.naver.com/item/sise_day.nhn?code={item_code}&page={page_no}"

headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'}

response = requests.get(url, headers=headers)
html = bs(response.text, "lxml")
table = html.select("table")
table = pd.read_html(str(table))
df_day = table[0].dropna()
return df_day
수업 자료 파일에 해당 내용을 업데이트 해두었습니다.
colab을 다시 열어보시면 변경된 내용으로 실습을 해보실 수 있습니다.

완성자료

0

2

1

섹션5 노션링크 는 따로 없나요?

0

7

1

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

10

2

Part 4에서 강의 연관 노션 정보들이 워드파일에 없습니다.

0

13

2

첨부자료 Part 4 코드 확인 부탁드리겠습니다.

0

12

2

Free Edition 실습 영상은 아직 업데이트전인가요?

0

7

1

질문 드립니다.

0

36

2

노션 링크

0

36

3

26년 1회 실기 해설 강의

0

43

2

노션 권한요청하였습니다 언제쯤 볼수있나요

0

34

2

AAFM CWM_LEVEL_2 Exam Questions 2026: Right Preparation Method

0

24

1

강의 내용 관련 질문드립니다~

0

34

2

퍼플렉시티 최소 결제단위 50달러로 바뀐 것 같습니다.

0

37

2

수강 연장 문의

0

30

1

강의자료 일괄 다운로드

0

38

2

5번 강의 1분까지 완료 후 오류가 뜹니다

0

26

2

list 문제 질문드립니다~

0

28

2

for, range 추가 방법

0

31

0

빅분기 실기 12회 재도전

0

39

1

노션 접속 권한 요청드립니다.

0

27

2

강의 기간 연장 가능여부 검토 요청건

0

30

1

수강기간 연장 문의 드립니다

0

36

2

reg.get("http://www.naver.com")

0

25

2

구글 Collab 접속 불가능

0

386

3