Akashic Records

BeautifulSoup API 가이드 본문

Web Crawling for Beginners

BeautifulSoup API 가이드

Andrew's Akashic Records 2024. 4. 23. 18:59
728x90

위는 파이썬 웹 크롤러 프로그램의 개념적 다이어그램을 나타낸 이미지입니다. 이 이미지는 컴퓨터 화면에 코드가 표시되고, 웹 서버와의 데이터 요청 및 응답을 상징하는 화살표가 흐름을 보여주는 모습을 단순하고 교육적인 스타일로 표현하고 있습니다. 컴퓨터는 'Web Crawler'로, 웹 서버는 'Website'로 레이블이 붙어 있습니다.

 

BeautifulSoup 라이브러리는 HTML과 XML 문서를 파싱하고 조작하기 위한 파이썬 라이브러리로, 매우 강력하고 유연한 도구입니다. 다음은 BeautifulSoup의 주요 메서드와 각 메서드의 사용 예시를 포함한 상세한 가이드입니다.

 

1. BeautifulSoup 설치

먼저, BeautifulSoup와 HTML을 요청하기 위한 requests 라이브러리를 설치해야 합니다:

pip install beautifulsoup4 requests

 

2. BeautifulSoup 객체 생성

웹 페이지의 HTML을 가져와 BeautifulSoup 객체를 생성합니다. 이 객체를 통해 문서를 쉽게 탐색하고 조작할 수 있습니다.

import requests
from bs4 import BeautifulSoup

url = "http://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

'html.parser'는 내장 HTML 파서를 사용하는 것입니다. 다른 파서로는 'lxml' (HTML과 XML 파일용)과 'html5lib'이 있습니다. html5lib은 파서가 HTML5 표준을 따르기 때문에 웹 표준을 준수하는 정확한 구문 분석이 필요한 경우에 특히 추천됩니다.

 

3. 요소 찾기 메서드

find()

특정 조건에 맞는 첫 번째 요소를 찾습니다. 태그 이름, 속성 등을 기준으로 검색할 수 있습니다.

# 태그 이름으로 요소 찾기
title = soup.find('title')
print(title.text)

# 속성으로 요소 찾기
login_link = soup.find('a', attrs={'id': 'login'})
print(login_link['href'])

find_all()

특정 조건에 맞는 모든 요소를 리스트로 반환합니다. 태그 이름, 클래스, 속성 등 다양한 필터를 적용할 수 있습니다.

# 모든 <a> 태그 찾기
links = soup.find_all('a')
for link in links:
    print(link.text, link['href'])

# 클래스 이름으로 여러 요소 찾기
items = soup.find_all('div', class_='item')
for item in items:
    print(item.text)

select()

CSS 선택자를 사용하여 요소를 찾습니다. 이 메서드는 find_all()과 비슷하지만, CSS 선택자를 기반으로 합니다.

# ID로 요소 찾기
header = soup.select_one('#header')
print(header.text)

# 클래스로 여러 요소 찾기
articles = soup.select('.article')
for article in articles:
    print(article.text)

select_one()

select() 메서드와 유사하지만, 조건에 맞는 첫 번째 요소만 반환합니다.

# 클래스 이름으로 첫 요소 찾기
first_article = soup.select_one('.article')
print(first_article.text)

 

4. 요소의 내용과 속성 접근

요소에서 텍스트나 속성 값을 추출할 수 있습니다.

# 요소의 텍스트 가져오기
print(first_article.text)

# 요소의 속성 값 가져오기
link = soup.find('a')
print(link['href'])  # href 속성 값 출력

 

5. 특정 요소의 자식과 부모 다루기

BeautifulSoup은 요소의 자식, 부모, 형제를 탐색하는 메서드도 제공합니다.

# 모든 자식 요소 찾기
for child in soup.find('div', class_='content').children:
    print(child)

# 부모 요소 찾기
parent = soup.find('span', class_='highlight').parent
print(parent)

이 가이드는 BeautifulSoup의 기본적인 사용 방법을 소개합니다. 실제 사용 시에는 웹 페이지의 구조에 따라 적절한 태그, 클래스, ID 등을 사용하여 요소를 정확하게 찾아야 합니다.

728x90
Comments