BeautifulSoup을 이용한 HTML 파싱
웹 크롤링으로 원하는 정보를 얻기 위해서는, 수집한 HTML 데이터에서 원하는 정보를 추출해야 합니다.
BeautifulSoup
은 이러한 작업을 쉽게 해결할 수 있도록 돕는 파이썬 패키지로, requests로 가져온 HTML 데이터를 파싱
(Parsing, 구문 분석을 통한 데이터 추출)하는 데 사용됩니다.
HTML 데이터를 파싱하고 필요한 정보 추출하기
BeautifulSoup을 사용하면 HTML 문서를 파이썬 객체로 변환하여, 문서의 각 요소를 파이썬 코드로 간편하게 탐색하고 조작할 수 있습니다.
지금부터 BeautifulSoup을 사용해 HTML 데이터를 파싱
하고, 필요한 정보를 추출하는 방법을 살펴보겠습니다.
BeautifulSoup으로 HTML 파싱하기
먼저, 웹 페이지에서 가져온 HTML 데이터를 BeautifulSoup 객체로 변환해야 합니다.
아래와 같이 requests
패키지를 사용해 HTML 데이터를 가져온 후, BeautifulSoup
객체를 생성하여 HTML을 파싱할 수 있습니다.
BeautifulSoup을 사용한 HTML 파싱
import requests
from bs4 import BeautifulSoup
# 요청할 URL
url = 'https://www.codefriends.net'
# GET 요청으로 HTML 데이터 가져오기
response = requests.get(url)
# BeautifulSoup 객체 생성 및 HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
# HTML의 제목(tag) 추출하기
title = soup.title.text
# 페이지 제목 출력
print(f"Page Title: {title}")
위 코드는 soup
변수에 HTML 데이터를 파싱한 BeautifulSoup 객체를 저장하고, soup.title.text
를 통해 HTML 문서의 제목을 추출합니다.
soup.title
코드는 HTML 문서의 <title>
태그 내용을 가져오며, .text
는 해당 태그의 텍스트를 추출합니다.
필요한 정보 추출하기
정보를 추출할 때는 아래와 같이 다양한 방법을 사용할 수 있습니다.
- 태그 이름으로 요소 찾기: HTML 문서에서 특정 태그를 찾습니다.
태그 이름으로 요소 찾기
# 모든 <a> 태그 찾기
links = soup.find_all('a')
# 모든 링크 출력
for link in links:
print(link.get('href'))
- 클래스 이름으로 요소 찾기: 특정 클래스 이름을 가진 요소를 찾을 수 있습니다.
클래스 이름으로 요소 찾기
# class="example"인 모든 <div> 태그 찾기
divs = soup.find_all('div', class_='example')
# 모든 <div> 태그의 텍스트 출력
for div in divs:
print(div.text)
- ID로 요소 찾기: 특정 ID를 가진 요소를 찾을 수 있습니다.
ID로 요소 찾기
# id="main-content"인 요소 찾기
main_content = soup.find(id='main-content')
# 선택된 요소의 텍스트 출력
print(main_content.text)