본문 바로가기
Python/Python Crawling

파이썬 크롤링 기본, 정규표현식이란?

by 워니 wony 2019. 5. 9.

정규표현식(regular expression)

  • 컴퓨터 소프트웨어 기술로 원하는 정보를 추출하는 것을 크롤링이라고 한다.
  • 크롤링으로 여러가지 데이터를 가지고 와서 맘에드는 데이터만 뽑기 위해 작성하는 식이 정규표현식.
  • 파이썬에서 re import 해서 사용할 있다.
    기본 라이브러리로 별도 설치 없이 import만으로 사용 가능

?

1 이하

u?

u 0 이거나 1 나와야

*

0 이상

u*

u 0번이상 나옴

+

1 이상

u+

u 1 이상 나옴

.

문자

.

1개의 문자와 일치

[ ]

문자클래스

[1-9]

[abc]d

1-9까지 하나
ad, bd, cd를 뜻

[^ ]

부정

[^a-z]

알파벳 소문자로 시작하지 않는 모든 문자

 

정규표현식의 문법 설명

  • 정규표현식은 정해진 규칙으로 사용하면서 익숙해 진다면 정보를 전처리 할 때 편히 사용할 수 있게 된다.
  • 처음에는 이해가 안되고 어려운것이 당연한 문법이다.
  • 위키백과에 가면 관련 설명을 볼 수 있다. 하지만 이해하기 쉽지 않을 수 있다.
  • https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

re.MULTILINE

  • 별로 끊어 달라는 옵션 (파이썬 re 옵션)

 

( ) 받아 오는 경우 튜플을 반환한다. 튜플은 변경 불가능

a='''{name:'홍길동',age:20}'''

info=re.findall("{name:'(.+)',age:(.+)}",a)

 

 

자주 쓰이는 패턴

1) 숫자만 : ^[0-9]*$

2) 영문자만 : ^[a-zA-Z]*$

3) 한글만 : ^[가-힣]*$

4) 영어 & 숫자만 : ^[a-zA-Z0-9]*$

5) E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$

6) 휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$

7) 일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

8) 주민등록번호 : \d{6} \- [1-4]\d{6}

9) IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

 

 

 

정규표현식 파이썬 : re

  • import re 사용
  • .+? 아무거나 와도 된다는
  • (.+?) ( )안에 들어간 것을 가져오라는
  • [ 예제 ]
import re

data = '''<member><name>홍길동</name><age>20</age></member><member><name>박자바</name><age>25</age></member>'''

list = re.findall('<member>(.+?)</member>',data)

print(list)

 

  • 정규표현식 에서 .+ .+? 차이
    • .+ 덩어리로 가져온다. :탐욕적 greedy
    • .+? 나눠서 가져온다. : 비탐욕적 non-greedy

 

  • 정규표현식에서 여러줄의 데이터를 가져 오는 경우
    • re.DOTALL 이라는 옵션을 써줘야 한다.
    • info2 = re.findall('<member>(.+)</member>',data2,re.DOTALL)

 

  • 정규표현식 옵션
    • 대소문자를 구별하지 않는 매칭
    • re.IGNORECASE
반응형

댓글