BeautifulSoup을 이용한 HTML 파싱
웹 크롤링을 하다 보면, 수집한 HTML 데이터에서 원하는 정보를 추출해야 할 때가 많습니다.
BeautifulSoup은 이 작업을 쉽게 도와주는 파이썬 패키지로, requests로 가져온 HTML 데이터를 파싱(Parsing, 구문 분석을 통한 데이터 추출)하는 데 사용됩니다.
HTML 데이터를 파싱하고 필요한 정보 추출하기
BeautifulSoup을 사용하면 HTML 문서가 파이썬 객체로 변환하여, 문서의 각 요소를 파이썬 코드로 간편하게 탐색하고 조작할 수 있습니다.
지금부터 BeautifulSoup을 사용해 HTML 데이터를 파싱하고, 필요한 정보를 추출하는 방법을 살펴보겠습니다.
BeautifulSoup으로 HTML 파싱하기
먼저, 웹 페이지에서 가져온 HTML 데이터를 BeautifulSoup 객체로 변환하여 파싱합니다.
예를 들어 requests 패키지를 사용해 HTML을 가져온 후, 이를 BeautifulSoup으로 파싱할 수 있습니다.
BeautifulSoup을 사용한 HTML 파싱
import requests
from bs4 import BeautifulSoup
# 요청할 URL
url = 'https://www.example.com'
# 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}")
이 코드에서는 BeautifulSoup
객체를 생성하고, html.parser
파서를 사용해 HTML 문서를 파싱합니다.
soup.title.text
를 통해 HTML 문서의 제목을 추출할 수 있습니다.
필요한 정보 추출하기
정보를 추출할 때는 아래와 같이 다양한 방법을 사용할 수 있습니다.
- 태그 이름으로 요소 찾기: 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)
웹 페이지에서 기사 제목과 링크 추출하기
아래는 실제 웹 페이지에서 기사 제목과 링크를 추출하는 예시입니다:
기사 제목과 링크 추출하기
import requests
from bs4 import BeautifulSoup
# 추출할 웹 페이지 URL
url = 'https://news.ycombinator.com/'
# GET 요청으로 HTML 데이터 가져오기
response = requests.get(url)
# BeautifulSoup 객체 생성 및 HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
# 모든 기사 제목과 링크 추출
articles = soup.find_all('a')
# 기사 제목과 링크 출력
for article in articles:
# 기사 제목과 링크 추출
title = article.text
# 링크 URL
link = article.get('href')
# 제목과 링크 출력
print(f"Title: {title}, Link: {link}")
이 코드는 YCombinator 뉴스 페이지에서 기사 제목과 링크를 추출하여 출력합니다.
이처럼 BeautifulSoup을 사용하면 웹 페이지의 구조를 분석해 원하는 데이터를 쉽게 추출할 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!