AI 정복기/Python - 혼자할 수 있을까?

BeautifulSoup은 뭐고 왜 필요한가요? – 웹 크롤링 입문자를 위한 진짜 설명서 (파이썬 독학)

문노베 2025. 4. 8.

BeautifulSoup은 뭐고 왜 필요한가요? – 웹 크롤링 입문자를 위한 진짜 설명서 (파이썬 독학)

“웹 크롤링을 하려면 BeautifulSoup을 써야 해요.” 이 말이 무슨 뜻인지 바로 이해되시나요?

 

BeautifulSoup은 뭐고 왜 필요한가요? – 웹 크롤링 입문자를 위한 진짜 설명서 (파이썬 독학)

 

안녕하세요, 문과 출신 파이썬 독학러 문노베입니다.

 

저는 웹 크롤링이라는 개념을 처음 들었을 때, “웹사이트에서 정보를 가져온다”는 말이 도무지 감이 안 왔어요.

 

그보다 더 혼란스러웠던 건 바로 이 단어: “BeautifulSoup”

 

이게 대체 뭐고, 왜 이름이 수프(soup)야? 왜 파이썬에서는 이걸 써야 정보를 가져올 수 있지?

 

오늘은 그 궁금증을 하나하나, 진짜 이해되는 방식으로 풀어드릴게요.

 

2025.03.19 - [AI 정복기/Python - 혼자할 수 있을까?] - 노베이스 비전공자들에게 파이썬이 희망인 이유

 

노베이스 비전공자들에게 파이썬이 희망인 이유

노베이스 비전공자들에게 파이썬이 희망인 이유"코딩? 그거 이과 전공자들이나 하는 거 아냐?" 파이썬을 배우면서 알게 된 사실, 문과생들에게도 이건 엄청난 무기입니다. 안녕하세요, 여러분!

nobe-moon.tistory.com

 

1. 웹 크롤링이란? – 우리가 인터넷에서 정보를 ‘가져온다’는 것

웹 크롤링(Web Crawling)은 웹페이지에 접속해서, 우리가 필요한 정보를 자동으로 수집하는 기술입니다.

 

사람이 눈으로 보던 것을, 컴퓨터가 대신 읽고 정리하게 만드는 거죠.

 

예를 들어 다음과 같은 일을 하고 싶을 때 크롤링이 필요해요:

  • ✅ 뉴스 사이트에서 특정 키워드가 포함된 기사 제목 수집
  • ✅ 쇼핑몰에서 오늘자 가격 정보 수집
  • ✅ 부동산 매물 데이터를 자동으로 엑셀에 저장

BeautifulSoup은 이런 크롤링을 할 때 필수로 등장하는 도구 중 하나입니다.

2. BeautifulSoup의 정체 – 이름에 속지 말 것

BeautifulSoup은 HTML 구조를 '예쁘게 다듬어서', 우리가 원하는 정보만 뽑을 수 있게 도와주는 파이썬 라이브러리입니다.

 

HTML은 웹페이지를 구성하는 코드인데, 이걸 그냥 받아오면 온통 태그와 속성투성이인 ‘잡탕 상태’ 예요.

 

그래서 만든 사람이 “수프처럼 뒤섞인 HTML을 예쁘게 요리해준다”는 의미로 이 이름을 붙인 거죠.

“Beautiful Soup is a Python library for pulling data out of HTML and XML files.” – 공식 문서: https://www.crummy.com/software/BeautifulSoup/bs4/doc/

한마디로 HTML 파싱 도구예요. 읽기 어려운 웹페이지 코드를, .text, .find(), .select() 같은 명령으로 쉽게 접근할 수 있게 도와주는 거죠.

3. requests + BeautifulSoup – 역할 분담 확실한 환상의 콤비

크롤링에서는 반드시 두 가지 라이브러리를 함께 씁니다:

라이브러리 역할
requests 웹페이지에 접속해서 HTML 코드 자체를 가져옴
BeautifulSoup 가져온 HTML 코드를 '읽기 좋게 가공'해서 원하는 정보만 추출

requests가 HTML 덩어리를 가져오는 배달부라면, BeautifulSoup은 그걸 정리해서 우리가 먹기 좋게 플레이팅 해주는 요리사예요.

4. 설치 방법과 실전 예제 – 진짜 작동하는 코드 보기

크롤링을 시작하려면 먼저 두 패키지를 설치해야 해요:

pip install requests
pip install beautifulsoup4

그리고 아래는 실전 예제 코드입니다. 네이버 뉴스에서 '파이썬' 키워드를 검색해, 기사 제목을 가져오는 간단한 코드예요:

 

import requests
from bs4 import BeautifulSoup

query = "파이썬"
url = f"https://search.naver.com/search.naver?where=news&query={query}"

response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

titles = soup.select(".news_tit")
for t in titles:
    print(t.text)

 

코드 설명은 다음과 같아요:

  • requests.get(url) → 해당 뉴스 검색 결과 페이지 요청
  • BeautifulSoup(response.text) → HTML 코드 정리
  • .select(".news_tit") → 기사 제목 요소들 추출

FAQ + 마무리

  • Q1. 꼭 BeautifulSoup을 써야 하나요?
    → HTML을 직접 파싱하려면 너무 복잡하고 비효율적이에요. BeautifulSoup이 거의 표준 도구처럼 사용됩니다.
  •  
  • Q2. 크롤링은 불법 아닌가요?
    → 대부분의 사이트는 '과도한 요청'이나 '로그인/결제 정보 크롤링'만 금지합니다. robots.txt 정책을 확인하세요.
  •  
  • Q3. requests 말고 Selenium은 뭔가요?
    → Selenium은 자바스크립트가 있는 복잡한 페이지 크롤링용입니다. BeautifulSoup은 정적 HTML에 특화돼 있어요.

 

오늘은 BeautifulSoup의 개념과 역할, 그리고 기본 사용법까지 살펴봤어요.

 

다음 글에서는 크롤링한 데이터를 CSV로 저장하거나, 자동화하는 방법을 배워볼게요!

반응형

댓글