본문으로 건너뛰기
실습하기

크롤링에 필요한 정규 표현식

정규 표현식(Regular Expression)은 문자열 데이터에서 특정 패턴을 가진 정보만을 추출하는 도구입니다.

주로 문자열 내에서 특정한 패턴을 찾고, 대체하거나, 일치 여부를 확인하기 위해 사용합니다.

이번 수업에서는 정규 표현식의 기본적인 개념을 살펴보고, 이를 활용해 크롤링 데이터에서 필요한 정보를 필터링하는 방법을 소개하겠습니다.


정규 표현식의 기본 문법

정규 표현식은 여러 가지 기호와 문자를 조합하여 특정 패턴을 정의합니다.

예를 들어, "^\d{3}-\d{3}-\d{4}$"라는 정규 표현식은 "123-456-7890"과 같은 형식의 전화번호를 찾는 데 사용됩니다.

정규 표현식에서 자주 사용되는 기호와 문자는 다음과 같습니다.

  • . : 임의의 한 문자에 대응합니다.
  • ^ : 문자열의 시작을 의미합니다.
  • $ : 문자열의 끝을 의미합니다.
  • * : 0개 이상의 문자를 의미합니다.
  • + : 1개 이상의 문자를 의미합니다.
  • [] : 대괄호 안의 문자 중 하나에 대응합니다.
  • \d : 모든 숫자에 대응합니다.
  • \w : 모든 알파벳 문자와 숫자에 대응합니다.
  • \s : 모든 공백 문자에 대응합니다.

파이썬에서 정규 표현식 사용하기

파이썬에서는 re 모듈을 사용해 정규 표현식을 처리할 수 있습니다. re 모듈은 문자열 검색, 매칭, 대체 등의 기능을 제공합니다.

파이썬에서 정규 표현식 사용 예시
import re

# 정규 표현식 패턴
pattern = r'\d{3}-\d{3}-\d{4}'

# 검색할 문자열
text = "고객 센터 연락처: 123-456-7890으로 문의 주세요."

# match에 패턴과 일치하는 문자열 저장
match = re.search(pattern, text)

# 패턴 일치 여부 확인
if match:
# 찾은 번호 출력: 123-456-7890
print(f"찾은 번호: {match.group()}")
else:
print("번호를 찾을 수 없습니다.")

이 코드는 문자열에서 전화번호 형식의 패턴을 찾아 출력합니다.


HTML 데이터에서 정규 표현식으로 이메일 주소 추출하기

예를 들어, 웹 페이지에서 이메일 주소만을 추출하고 싶을 때 정규 표현식을 사용할 수 있습니다.

정규 표현식으로 이메일 주소 추출하기
import re
import requests
from bs4 import BeautifulSoup

# 크롤링할 URL
url = 'https://www.codefriends.net/'

# HTML 가져오기
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# HTML에서 텍스트 추출
text = soup.get_text()

# 정규 표현식 패턴: 이메일 주소 찾기
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'

# 이메일 주소 찾기
emails = re.findall(email_pattern, text)

# 추출한 이메일 주소 출력
for email in emails:
print(f"찾은 이메일 주소: {email}")

이 코드는 웹 페이지에서 모든 이메일 주소를 찾아 출력합니다.

re.findall() 함수를 사용해 정규 표현식과 일치하는 모든 이메일을 리스트로 반환받습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!