CodeGym /자바 코스 /Python SELF KO /BeautifulSoup으로 HTML 파싱하기

BeautifulSoup으로 HTML 파싱하기

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

1. HTML 문서 로드 및 파싱

기능 간단히 살펴보기

requests 라이브러리는 우리가 필요한 웹 페이지의 HTML 코드를 가져오는 "메신저"야. 마치 피자배달원이 HTTP 요청을 보내서 결과물을 가져오는 것처럼 작동하지. 물론 여기엔 "마르게리타" 피자나 박스는 없어.

BeautifulSoup는 대신 HTML 코드를 태그, 속성, 텍스트 같은 재료로 깔끔히 분리해주는 우리의 "요리사" 같은 존재야. 원하는 요소들을 찾아내고 그 중요한 정보를 저장하는 데 아주 유용해.

requests 라이브러리 사용하기

자, 이제 우리가 첫 HTTP 요청을 보내고 웹 페이지의 HTML 코드를 얻을 준비가 됐어. 연습을 위해 example.com 페이지를 로드해 보자. 이 웹사이트는 인터넷의 "공룡" 같은 존재라 입문용으로 딱 좋아.

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# 모든 게 잘 작동하는지 확인
if response.status_code == 200:
    print("페이지가 성공적으로 로드되었습니다!")
else:
    print("뭔가 문제가 있는 것 같아요. 오류 코드:", response.status_code)

이 프로그램은 URL에 요청을 보내 결과에 따라 성공 또는 오류 메시지를 출력할 거야. 모든 게 잘 되면, HTML 코드가 텍스트 형태로 우리의 손에 들어오게 돼.

오류 코드 확인하기

만약 HTML 파싱을 자동화하려 한다면, 로드되었어야 할 페이지가 로드되지 않는 경우를 자주 마주칠 거야. 그래서 오류 코드를 분석하는 건 여러 페이지를 파싱하는 프로젝트에서 꼭 필요한 부분이지.

웹 사이트 소유자들은 자신의 데이터를 파싱하는 걸 별로 반기지 않아. 첫째, 동시다발적으로 수천 개의 페이지를 파싱하면 사이트에 부담이 되거든. 둘째, 그 데이터는 그들의 자산이고, 그걸로 돈을 벌고 있어. 그래서 CAPCHA, CloudFlare 같은 여러 가지 방법으로 파싱을 방해하기도 해.

사업적으로는 모든 경쟁자를 파싱하면서도 누구도 자신의 데이터를 파싱하지 못하게 하는 게 이상적이지. 말 그대로 냉전과 같아.

BeautifulSoup을 이용한 HTML 파싱

HTML 코드를 얻으면 이제 BeautifulSoup로 이를 살펴볼 수 있어. 이건 마치 책을 열어 내용을 읽는 것과 같아:

Python

from bs4 import BeautifulSoup

# HTML 코드 내용을 BeautifulSoup에 전달
soup = BeautifulSoup(response.text, 'html.parser')

# 안에 뭐가 있는지 살펴보자
print(soup.prettify())

prettify() 메서드는 HTML 코드를 보기 좋게 포맷해서 살펴볼 수 있게 해 줘. 다음 수업에서는 이 HTML을 더 자세히 들여다보고, 마치 아이가 모래사장에서 놀 듯 재미있게 찾아볼 거야. 그리고 집에 가면 지치고 더럽긴 해도 기분은 정말 좋을 거야 :)

3. 실습: HTML 로드 및 분석

개념을 더 잘 이해하기 위해 실제 연습을 해 보자. example.com에서 제목과 설명을 추출하려고 해 보자. 이를 위해 우리가 아는 HTML과 새로 배운 BeautifulSoup을 활용할 거야.

데이터 추출

Python

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

# 메인 제목 (h1) 추출
main_heading = soup.h1.string
print("메인 제목:", main_heading)

# 첫 번째 단락 추출
paragraph = soup.find('p').text
print("첫 번째 단락:", paragraph)

이 예제에서 title, h1 속성과 find() 메서드를 사용해 페이지에서 필요한 정보를 끄집어냈어. 우리는 범죄 현장에서 단서를 모으는 사이버 탐정이 된 거야!

4. 자주 발생하는 오류

웹 스크래핑 작업 중에는 HTTP 요청 처리 오류, 데이터 추출 오류 또는 HTML 파싱 오류 같은 일반적인 문제를 자주 겪게 될 거야. 견고하고 신뢰할 수 있는 스크립트를 작성하려면 인내심과 연습이 필요하지. 예를 들어, 항상 상태 코드 (response.status_code)를 확인해서 요청이 성공했는지 확실히 해야 해. find()find_all() 메서드를 잘못 사용하면 HTML 구조를 고려하지 않았을 때 오류가 발생할 수 있어. 파싱을 시작하기 전에 항상 HTML을 분석해야 해.

웹 스크래핑은 데이터 수집부터 상품 가격 모니터링까지 다양한 실용적인 활용 사례가 있어. 면접에서도 이런 프로젝트 코드를 물어볼 수 있어. 실제로, 마케터는 경쟁사의 가격 모니터링을 위해, 개발자는 외부 사이트 통합을 위해 스크래핑을 사용하곤 하지.

뉴스 집계기와 분석 시스템을 위한 정보 처리에서도 웹 스크래핑 지식은 유용할 거야. 다양한 소스에서 데이터를 스스로 수집하는 스크립트를 작성해 반복 작업을 자동화할 수 있어. 계속해서 우리 가상의 애플리케이션을 발전시키고 진정한 웹 마스터로 거듭나 보자!

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