CodeGym /자바 코스 /Python SELF KO /BeautifulSoup 사용 및 정보 추출

BeautifulSoup 사용 및 정보 추출

Python SELF KO
레벨 31 , 레슨 1
사용 가능

웹 페이지가 그냥 예쁜 이미지와 텍스트라고 생각한다면, 그건 오해야. 이건 양파 같아 — 층이 많고, 데이터를 얼마나 많이 추출할 수 있는지 알게 되면 (물론 기쁨의) 눈물을 흘리게 될 거야. 오늘은 BeautifulSoup 라이브러리를 사용해서 HTML 페이지를 파헤쳐 보자. 가상 삽 준비됐지? 시작하자!

1. HTML 문서 분석

간단한 페이지

몇 가지 간단한 HTML 문서를 분석하고 그 구성 요소와 데이터 추출에 유용한 요소를 살펴보자.

뉴스 페이지의 예:

HTML

<html>
  <head>
    <title>뉴스</title>
  </head>
  <body>
    <h1>오늘의 주요 소식</h1>
    <p>오늘 중요한 일이 일어났습니다!</p>
  </body>
</html>

이 예제에서 h1은 기사 제목이고, p는 본문이야.

HTML 구조가 스크래핑에 미치는 영향

BeautifulSoup을 사용하기 전에, 분석하려는 HTML 문서의 구조를 이해하는 것이 중요해. 그래야 어떤 부분이 필요한 데이터를 포함하고 있는지 알 수 있어. 예를 들어 페이지 제목을 찾으려면 <h1>를, 리스트를 추출하려면 <ul><li>를 확인하자.

스크래핑 준비

데이터를 추출하기 전에 주요 태그와 속성을 확인하는 것이 중요해. 예를 들어, 웹 개발자가 페이지에 class="headline" 같은 속성을 사용해서 데이터를 정리했다면, 그걸 이용하자. 브라우저의 개발자 도구를 사용해서 HTML 구조를 살펴봐. 요소를 오른쪽 클릭하고 "검사"(Google Chrome 기준)를 선택하자.

2. 라이브러리 설치 및 설정

BeautifulSoup과 requests 설치

HTML 작업을 위해 BeautifulSoup 라이브러리를 사용할 거야. HTML 페이지를 로드하려면 requests도 필요해. 설치는 간단하고, 콘솔에서 몇 가지 명령만 입력하면 돼:

Bash

pip install beautifulsoup4 requests

requests와 BeautifulSoup의 협업

requests는 웹 페이지에서 HTML을 로드해 주고, BeautifulSoup은 이를 분석하는 데 도움을 줄 거야. 이게 실제로 어떻게 동작하는지 보자:

Python

import requests
from bs4 import BeautifulSoup

# 페이지 로드
url = 'https://example.com'
response = requests.get(url)

# BeautifulSoup로 페이지 파싱
soup = BeautifulSoup(response.text, 'html.parser')

# 페이지 제목 추출
title = soup.title.text
print('제목:', title)

3. 태그를 통한 탐색 및 데이터 추출

탐색 메서드

이제 HTML 문서를 갖고 있으니, BeautifulSoup을 사용해 탐색할 수 있어. .select() 같은 멋진 메서드는 CSS 선택자를 사용해 데이터를 추출할 수 있게 해줘.

태그를 통한 데이터 추출

BeautifulSoupfindfind_all 같은 메서드를 제공해서, 특정 태그를 기준으로 요소를 찾을 수 있어. 이렇게 원하는 데이터를 쉽게 찾을 수 있어:

Python

# 첫 번째 단락 찾기
paragraph = soup.find('p').text
print('첫 번째 단락:', paragraph)

# 리스트의 모든 항목 찾기
list_items = soup.find_all('li')
for item in list_items:
    print('리스트 항목:', item.text)

속성을 사용한 필터링

특정 조건(예: 특정 class가 있는 경우)에 맞는 요소를 추출해야 할 때가 있어. BeautifulSoup는 이 작업을 쉽게 만들어줘:

Python

# 특정 클래스가 있는 요소 찾기
headline = soup.find('h1', class_='main-headline').text
print('제목:', headline)

4. CSS 선택자 사용

CSS 선택자란?

CSS 선택자는 Python 프로그래머의 관점에서 매우 강력한 도구야. 이는 특정 기준에 따라 데이터를 추출할 수 있는 기능을 제공해줘. 동일한 스타일의 요소를 찾는 데 사용할 수 있어서 스크래핑 작업을 더 유연하고 정확하게 만들어줘.

BeautifulSoup에서 선택자 사용

BeautifulSoupselect 메서드를 사용해 CSS 선택자를 사용할 수 있게 해줘. 예를 들어:

Python

# 모든 링크 선택
links = soup.select('a')
for link in links:
    print('링크:', link['href'])

선택자를 조합해서 더 정밀한 선택도 가능해. 예를 들어, soup.select('div.article h2')div 안의 h2를 모두 선택해줘.

CSS 선택자로 검색 예제

이제 배운 것을 실습해 보자. highlight라는 클래스를 가진 모든 단락을 선택해서 그 내용을 출력해 보자:

Python

# 'highlight' 클래스를 가진 모든 단락 추출
highlighted_paragraphs = soup.select('p.highlight')
for para in highlighted_paragraphs:
    print('강조된 단락:', para.text)

여기까지야. 다음 강의까지 스크래핑 기술을 꼭 연습해 봐. 파싱의 멋진 세계에서 행운을 빌어!

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION