[python] 파이썬 BeautifulSoup과 정규 표현식

파이썬의 BeautifulSoup은 웹 스크래핑에 유용한 도구입니다. HTML 또는 XML과 같은 웹 페이지를 파싱하고 데이터를 추출하는 데 사용됩니다. 그리고 정규 표현식은 특정 패턴을 찾거나 매치시키는 데 사용됩니다. 이 두 가지 도구를 함께 사용하면 웹페이지에서 원하는 데이터를 더 쉽게 추출할 수 있습니다.

BeautifulSoup 설치

먼저 BeautifulSoup을 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.

pip install beautifulsoup4

BeautifulSoup 사용하기

BeautifulSoup을 사용하려면 먼저 웹 페이지의 HTML을 파싱해야 합니다. 이를 위해 BeautifulSoup 객체를 생성하고 웹 페이지의 HTML을 전달합니다. 다음은 간단한 예제입니다.

from bs4 import BeautifulSoup
import requests

# 웹 페이지 가져오기
url = 'http://example.com'
response = requests.get(url)
html = response.text

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

웹 페이지를 파싱한 후, soup 객체를 사용하여 원하는 내용을 검색하거나 추출할 수 있습니다. 다음은 몇 가지 예시입니다.

# 태그 이름으로 검색하기
title = soup.find('title').text
print(title)

# 클래스 이름으로 검색하기
div = soup.find_all('div', class_='content')
for item in div:
    print(item.text)

# CSS 선택자로 검색하기
links = soup.select('a[href]')
for link in links:
    print(link['href'])

정규 표현식 사용하기

정규 표현식은 파이썬의 re 모듈을 통해 사용할 수 있습니다. 다음은 정규 표현식을 사용하여 문자열에서 패턴을 찾는 예제입니다.

import re

# 패턴 정의
pattern = r'\d+'

# 문자열에서 패턴 찾기
text = "Hello, my age is 20."
matches = re.findall(pattern, text)
print(matches)

위의 예제에서는 숫자 패턴(\d+)을 정의하고, 주어진 문자열에서 해당 패턴을 찾아 출력합니다.

BeautifulSoup과 정규 표현식 함께 사용하기

BeautifulSoup과 정규 표현식을 함께 사용하면 웹 페이지에서 특정 패턴을 가진 데이터를 더욱 효율적으로 추출할 수 있습니다. 다음은 예제입니다.

import re
from bs4 import BeautifulSoup
import requests

# 웹 페이지 가져오기
url = 'http://example.com'
response = requests.get(url)
html = response.text

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

# 특정 패턴을 가진 링크 찾기
pattern = r'https?://[\w./]+'  # http 또는 https로 시작하고, 문자, 숫자, ., /로 구성된 패턴
links = soup.find_all('a', href=re.compile(pattern))
for link in links:
    print(link['href'])

위의 예제에서는 정규 표현식을 사용하여 웹 페이지에서 http 또는 https로 시작하는 링크를 찾습니다.

마무리

이렇게 BeautifulSoup과 정규 표현식을 함께 사용하면 웹 스크래핑에서 원하는 데이터를 더욱 쉽게 추출할 수 있습니다. BeautifulSoup과 정규 표현식에 대해 더 자세히 알고 싶다면 공식 문서를 참조하시기 바랍니다.