Ch.1 Python 라이브러리 15선

BeautifulSoup — 웹페이지 긁어오기

lightbulb

핵심 개념

BeautifulSoup

HTML/XML을 파싱하여 데이터를 추출하는 라이브러리

웹 크롤링

웹페이지의 정보를 자동으로 수집하는 기술


article

핵심 내용

BeautifulSoup은 웹페이지를 읽고 원하는 정보만 뽑습니다

한 줄 요약: HTML 코드에서 원하는 텍스트, 링크, 이미지 등을 골라서 추출하는 파싱 라이브러리. 실생활 비유: 신문에서 헤드라인만 오려 모으는 스크랩북을 생각하세요. BeautifulSoup은 웹페이지라는 '신문'에서 원하는 부분만 자동으로 오려줍니다.

웹에서 데이터를 자동으로 수집할 때

수동 (브라우저): 사이트 접속 → 기사 제목 복사 → 메모장 붙여넣기. 100개면 100번 반복. 눈 아프고 시간 낭비.

코드 (BeautifulSoup): soup.select('.headline')

한 줄이면 100개 헤드라인 한 번에 추출. 매일 자동 실행 가능.

requests + bs4 콤보로 시작합니다

pip install beautifulsoup4 requests
import requests
from bs4 import BeautifulSoup

r = requests.get('https://news.ycombinator.com')
soup = BeautifulSoup(r.text, 'html.parser')
titles = soup.select('.titleline > a')
for t in titles[:5]:
    print(t.text)

실행 결과: Hacker News의 최신 게시글 제목 5개가 출력됩니다. requests로 HTML을 받아오고, BeautifulSoup으로 원하는 태그만 골라낸 겁니다.

사이트 URL + 원하는 정보를 구체적으로 알려주세요

좋은 프롬프트 예시 "BeautifulSoup으로 네이버 뉴스 헤드라인을 크롤링해서 상위 10개를 출력해줘"

프롬프트 변형 • "select 대신 find_all로 추출해줘" • "추출 결과를 CSV 파일로 저장해줘" • "이미지 태그의 src 속성도 같이 추출해줘"

import requests
from bs4 import BeautifulSoup

r = requests.get('https://news.ycombinator.com')
soup = BeautifulSoup(r.text, 'html.parser')

for a in soup.select('.titleline > a')[:10]:
    title = a.text
    link = a.get('href', '')
    print(f'{title} | {link}')

뉴스 헤드라인 수집기

import requests
from bs4 import BeautifulSoup
from datetime import datetime

url = 'https://news.ycombinator.com'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')

articles = soup.select('.titleline > a')[:10]
scores = soup.select('.score')

print(f'=== Tech News ({datetime.now().strftime("%Y-%m-%d")}) ===\n')
for i, article in enumerate(articles, 1):
    title = article.text
    link = article.get('href', '')
    score = scores[i-1].text if i-1 < len(scores) else 'N/A'
    print(f'{i}. {title}')
    print(f'   점수: {score} | 링크: {link}\n')

실행 방법: `python 뉴스수집.py`로 실행. Hacker News 인기 글 10개가 제목, 점수, 링크와 함께 출력됩니다. 매일 아침 실행하면 기술 뉴스 브리핑으로 활용할 수 있어요.

BeautifulSoup에서 CSS 선택자로 요소를 찾는 메서드는?

key

핵심 용어

🍲

BeautifulSoup

HTML/XML을 파싱하여 데이터를 추출하는 라이브러리

🕷️

웹 크롤링

웹페이지의 정보를 자동으로 수집하는 기술

📰 뉴스 수집

여러 뉴스 사이트에서 오늘의 헤드라인을 자동 수집

🏷️ 가격 모니터링

쇼핑몰 상품 가격을 매일 기록해서 최저가 알림

📊 데이터 수집

API가 없는 사이트에서 표, 목록 데이터를 추출

check_circle

핵심 정리

  • 1BeautifulSoup은 HTML에서 원하는 데이터만 추출하는 파싱 라이브러리
  • 2requests로 HTML을 받아오고, select() 또는 find_all()로 태그를 골라냄
  • 3뉴스 헤드라인, 상품 가격, 표 데이터 등 API 없는 사이트도 크롤링 가능
  • 4AI 프롬프트에 사이트 URL + CSS 선택자 또는 원하는 데이터를 명시하면 정확한 코드 생성

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작