본문 바로가기
코딩/데이터분석(Pandas, ML, etc)

웹사이트(인터넷)에서 표를 판다스(Pandas) 데이터프레임으로 불러오는 방법/read_html

by 나홀로코더 2021. 12. 27.
반응형

판다스에서 원데이터를 불러오는 가장 흔한 방법은 앞서 소개한 CSV, 엑셀 파일을 불러오는 방법일 것이다.

 

판다스(Pandas)에서 엑셀, CSV 파일 불러오기 기초

판다스(Pandas)에서 엑셀, CSV 파일의 일부만 불러오기, 데이터타입과 포맷 지정하기

판다스(Pandas)에서 시트가 여러 개인 엑셀 파일을 불러오는 방법

 

그러나 가끔은 웹사이트에 있는 자료를 긁어오고 싶을 때도 있다.

 

예를 들면 위키백과에서 국가별 1인당 GDP 데이터를 긁어다 데이터프레임으로 바꾸고 싶다면 어떻게 하면 될까?

 

필자가 웹페이지의 정보를 가져오는 방법도 소개한 적이 있긴 하지만, 이 방법으로 데이터프레임을 만들기는 쉽지 않아 보인다.

 

파이썬으로 웹 페이지에서 정보 추출하기(웹스크레이핑, 웹크롤링)/Request와 Beautifulsoup 이용하기

파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기

 

그런데 만일 웹페이지에서 가져오려는 정보가 표라면, 판다스의 read_html() 함수를 이용해 매우 간단하게 읽어올 수가 있다.

 

코드는 아래와 같다.

 

import pandas as pd
url = 'https://ko.m.wikipedia.org/wiki/%EC%9D%BC%EC%9D%B8%EB%8B%B9_%EB%AA%85%EB%AA%A9_%EA%B5%AD%EB%82%B4_%EC%B4%9D%EC%83%9D%EC%82%B0%EC%88%9C_%EB%82%98%EB%9D%BC_%EB%AA%A9%EB%A1%9D'
df = pd.read_html(url)[2]
print(df)

 

많은 설명이 필요해 보이지 않는다. 데이터를 가져 올 웹페이지의 url을 read_html 함수에 넘겨주면 끝이다.

 

이렇게 하면 해당 웹페이지에 있는 모든 <table> 태그를 데이터프레임으로 알아서 변환해 '리스트'로 돌려준다.

 

태그가 무엇인지는 아래 게시글에서 소개한 바 있다.

 

웹 크롤링, 웹 자동화 기초/HTML 문서의 구조와 태그(h, p, a, div, ...)

 

read_html 함수를 실행해보면, 예제의 웹페이지에 있는 총 27개의 table 태그가 불러와진다.

 

위 예제 코드에서는 그중 3번째 테이블인 "국제통화기금"에서 발표한 데이터를 df 변수로 지정해 출력하는 것이다.

 

[2] 대신 [3], [4] 등으로 바꿔보면 뒤이어 나오는 "세계은행", "유엔"에서 발표한 자료들이 출력된다.

 

이렇게 간단하니, requests나 bs4를 이용해 스크레이핑해 보려는 수고는 하지 않기를 바란다.

반응형

댓글