table태그를 BeautifulSoup을 이용해서 파싱하는 것은 굉장히 귀찮고 불편합니다. 이 작업을 편리하게 하기 위해서 html_table_parser를 이용하는데요. 이 방법도 좋지만 이보다 더 편리하고 효과적인 방법이 있습니다. 오늘은 html_table_parser 보다 쉬운 table태그를 판다스 데이터프레임으로 만드는 방법에 대해서 알아보겠습니다.

 

 

html_table_pasrer가 불편한 이유

위에도 말했지만 별도로 설치해야 하고, 이 패키지를 설치하면 beautifulsoup 버전이 꼬이면서 새로 설치해야 하는 일이 발생합니다. 그래서 다른 방법을 찾아봤는데요.

 

 

판다스 패키지 read_html을 이용해보세요

read_html을 이용하면 table태그를 한 번에 데이터프레임으로 가져올 수 있습니다.

 

from urllib.request import urlopen
rlt = urlopen('https://stock.infoking.site/kospi200info/')

import pandas as pd
df = pd.read_html(rlt)

 


이 방법을 이용하면 url에 접속해서 html을 수집하고, 파싱하는 작업도 단축할 수 있는데요. 아래와 같이 바로 url을 넣어서 실행할 수 있습니다.

 

import pandas as pd

df = pd.read_html('https://stock.infoking.site/kospi200info/')


read_html은 페이지 안에 있는 모든 table태그를 데이터프레임으로 변환합니다. 변환한 데이터는 리스트 자료형으로 만들어지는데요. 그래서 필요한 데이터프레임을 가져와서 사용해야 합니다. 그래서 한 페이지에 table태그가 여러 개 있을 때 더 유용하게 사용할 수 있습니다.

 

 

이렇게 사용하면 더 좋습니다

데이터 프레임으로 가져오면 각 칼럼의 데이터타입이 자동으로 지정이 되는데요. 문자열로 인식되어야 됨에도, 정수형으로 인식돼 데이터가 날라가는 경우가 있습니다. 이럴 경우에는 칼럼의 데이터 타입을 미리 저장하는 것이 좋습니다. 아래와 같이 converters 입력 파라미터에 칼럼명과 원하는 데이터 타입을 딕셔너리로 지정하면 됩니다.

 

df = pd.read_html('https://stock.infoking.site/kospi200info/', converters={'no':str})

 


혹은 에러가 발생한다면 https에서 s를 빼고 하는 것도 도움이 됩니다.

 


오늘은 이렇게  html_table_parser 보다 쉬운 table태그를 판다스 데이터프레임으로 만드는 방법에 대해서 알아보았습니다. 웹사이트 표를 수집할 때 사용하면 굉장히 편리합니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기