본문 바로가기
프로그래밍 언어/Python

BeautifulSoup 사용해보기

by 까망 하르방 2021. 2. 28.
반응형

HTML 및 XML 파일에서 원하는 데이터를 구조적으로 분석 및 Parsing 할 수 있는 Python 라이브러리(모듈) 입니다.

 

Beautiful Soup 설치하기

pip install beautifulsoup4

Beautiful Soup 라이브러리는 Python 에서 기본적으로 제공하지 않기에 별도 설치합니다.

 

설치한 라이브러리를 import

from bs4 import BeautifulSoup as bs
import urllib.request

- urllib는 파이썬에서 웹과 관련된 데이터를 이용할 수 있는 라이브러리 입니다.

  내부에 총 4개의 모듈이 존재하며 그 중에서 웹을 열어서 데이터를 읽어오는 request 모듈을 활용합니다.    

  (import requests 해서 사용하는 경우도 있습니다.)

 

HTML 및 CSS 구조 분석

BeautifulSoup은 웹 크롤링을 하는 것이기 때문에

대상 URL, 목적 데이터 그리고 HTML 및 CSS 구조 분석을 하면 좋습니다.

① 아래와 같이 Naver 영화 페이지에서 평점 순 목록 데이터를 가져오겠습니다.

  

                                    출처: Naver 영화

② HTML 구조를 분석하면 목적 Data가 <div class="tit5">에서 텍스트로 적혀져 있는 것을 확인할 수 있습니다.

    (Chrome에서 개발자 도구(단축키 F12)를 통해 확인 가능) 

    

 

크롤링 코드 작성

목적 대상에 맞춰서 코드 작성

if __name__  == "__main__":
    url = 'http://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200930'
    soup = bs(urllib.request.urlopen(url).read(), 'html.parser')
    res = soup.find_all('div', 'tit5')
    for i in res:
        print(i.get_text(), end='')

- urlopen() 함수에 웹 페이지 주소(URL)를 인자로 넘겨주고, 웹에서 데이터 객체를 얻을 수 있습니다.

- read() 함수로 문서의 HTML 코드를 읽어 옵니다.

- find_all() 함수로 <div class="tit5"> 항목을 모두 들고 옵니다.

- for문으로 해당 태그 항목들에서 text만 추출합니다.

대상 문서에서 원하는 데이터를 효율적으로 추출하기 위해서는

먼저, 문서의 HTML / XML / CSS 구조를 분석하고 무엇을 기준으로 데이터를 parsing할 지 정합니다.

ex) find(), find_all(), select() 함수가 있으면 CSS의 경우 select()를 주로 사용합니다.

반응형

댓글