Python - Beautiful Soup ? (HTML / XML 데이터를 가공하기)

컴퓨터/Python

728x90
반응형

서론

HTML이나 XML 등의 데이터 덩어리를 Python으로 가지고 온다면 이것을 어떻게 써야 할까요? 

예를 들어 가지고 온 HTML 문서에서 <h1> 태그만을 가지고 오고 싶다면 데이터 덩어리에서 추출하는 것은 상당히 손이 많이 가는 작업일 것입니다. 

Beauiful Soup 패키지는 이런 데이터 덩어리를 손쉽게 유용한 정보로 가공할 수 있게 해주는 유용한 라이브러리입니다.

 

Beauiful Soup4

beauiful soup는 계속 새로운 버전이 릴리즈 되면서 현제 Beauiful Soup4를 이용하여 개발하고 있습니다. 

따라서 최신 버전의 사용법을 숙지하는 것을 권장드립니다.

그럼 간단한 예제들을 통해 해당 라이브러리를 설치해보고 간단한 실습을 해보도록 하겠습니다.

 

패키지 설치하기 with pip

우선 pip를 통해서 해당 라이브러리를 설치하도록 합시다.

pip install beautifulsoup4

 

설치 방법을 모르거나 에러가 방생한다면 아래 링크를 확인하세요

 

Python - 모듈 관리 (pip란?)

Python에서 외부 모듈은 어떻게 사용하는가? 지난 포스트에서 파이썬에서 모듈을 직접 만들어 보고 사용하는 방법을 알아봤습니다. 그렇다면, 이미 만들어진 수많은 모듈들을 어떻게 사용자가 가

blog-of-gon.tistory.com

 

 

사용해보기 - 준비

우선 request 패키지를 이용해서 html 데이터 덩어리를 취득한 후 beautifulsoup4에서 제공하는 객체에 담아보도록 하겠습니다.

 

import requests
from bs4 import BeautifulSoup
response = requests.get("https://comic.naver.com/index")

soup = BeautifulSoup(response.text)

이제 soup이라는 객체에서 손쉽게 데이터를 사용할 수 있습니다.

 

 

사용해보기 - 추출

아래의 예제처럼 html덩어리에서 값을 쉽게 추출할 수 있습니다.

import requests
from bs4 import BeautifulSoup
response = requests.get("https://comic.naver.com/index")

soup = BeautifulSoup(response.text)

#모든 a 태그 추출하기
print((soup.find_all('a')))

#id를 통한 값 추출하기
print((soup.find_all(id='realTimeRankFavorite')))

#CSS 선택자를 통한 추출하기
print(soup.select("#realTimeRankFavorite"))

 

사용해보기 - 접근

아래와 같은 형식으로 작성해서 손쉽게 태그들에 접근할 수도 있습니다.

다만 하위 요소에 중복되는 태그요소가 있다면 가장 처음 만나는 태그를 보여줍니다.

#접근하기
print(soup.head)
print(soup.body.a)

 

이외에도 다양한 방법으로 접근 추출 탐색 등 아주 편리하게 기능을 제공해줍니다.

 

이후 데이터를 가공하는 과정을 통해서 하나하나 알아보도록 하겠습니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :