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()를 주로 사용합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
[python] join 함수로 문자열 합치기(이어붙이기) (0) | 2021.08.15 |
---|---|
[python] 파이썬 함수 활용해보기 (1) | 2021.08.15 |
[python] 파이썬 변수 타입(Type) 종류 (0) | 2021.08.15 |
[Python] 세미콜론(;)을 언제 사용할까? (0) | 2021.03.22 |
python 언어 특징 (2) | 2021.02.20 |
댓글