크롤링에 필요한 정규 표현식
정규 표현식(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()
함수를 사용해 정규 표현식과 일치하는 모든 이메일을 리스트로 반환받고, 웹 페이지에서 모든 이메일 주소를 찾아 출력합니다.
정규 표현식에서 \d
는 모든 숫자에 대응한다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과