가이드라인

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는 해당 태그의 텍스트를 추출합니다.


필요한 정보 추출하기

정보를 추출할 때는 아래와 같이 다양한 방법을 사용할 수 있습니다.

  1. 태그 이름으로 요소 찾기: HTML 문서에서 특정 태그를 찾습니다.
태그 이름으로 요소 찾기
# 모든 <a> 태그 찾기 links = soup.find_all('a') # 모든 링크 출력 for link in links: print(link.get('href'))

  1. 클래스 이름으로 요소 찾기: 특정 클래스 이름을 가진 요소를 찾을 수 있습니다.
클래스 이름으로 요소 찾기
# class="example"인 모든 <div> 태그 찾기 divs = soup.find_all('div', class_='example') # 모든 <div> 태그의 텍스트 출력 for div in divs: print(div.text)

  1. 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 뉴스 페이지에서 a 태그를 찾아 기사 제목과 링크를 추출합니다.

이처럼 BeautifulSoup을 사용하면 웹 페이지의 구조를 분석해 원하는 데이터를 쉽게 추출할 수 있습니다.

Mission
0 / 1

아래 빈칸에 들어갈 가장 적절한 메서드는 무엇일까요?

BeautifulSoup 패키지로 HTML 데이터를 파싱하고 필요한 정보를 추출할 때, HTML 문서의 제목을 추출하는 메서드는 입니다.
soup.title.text
soup.find_all('title')
soup.get_title()
soup.find('head').title

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과