본문 바로가기
Python/Python Crawling

파이썬 크롤링, re로 특정 정보 선택하기(간단한 정규표현식)

by 워니 wony 2019. 5. 9.

re란?

re는 파이썬 기본 라이브러리로 별도 설치가 필요 없다.

re를 사용하면 특정 규칙을 가지고 있는 형태의 정보만 선택해서 가져올 수 있다.

 

 

re 예제

re를 import한 다음  아래와 같이 쓰면 된다.

  • re.findall( 정규표현을 활용한 규칙, 값이 담긴 변수명 ) 
  • .+?는 하나 이상의 글자를 의미하며, (.+?)는 해당 위치에 있는 값을 선택하는 것이다.
  • ( )안에 들어가는 것이 내가 추출하고자 하는 정보를 뜻한다. 한번에 여러개의 가로를 쓸수 있음. 
  • ( )에 담긴 정보는 배열의 형태로 반환된다. 
  • re의 findall 메소드를 사용하면 반환 값이 하나여도 배열을 반환한다. 그렇기 때문에 일반적으로 2차원 배열이 반환 된다. 그래서 그 안의 정보를 가져오기 위해서는 배열변수명[ 1차 인덱스 ][ 2차 인덱스 ]으로 접근해야 한다.
  • 그리고! ( )로 반환 된 값은 튜플로 반환된다. 튜플을 변경이 불가능 하기 때문에 읽기만 가능하고 수정 불가능하다.
import re

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

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

print("이름:",info[0][0])
print("나이:",info[0][1])

(결과값)

 

 

ㅇ re 예제 2

import re
data='''<member><name>홍길동</name><age>20</age></member><member><name>박자바</name><age>25</age></member><name>파이썬</name><name>노드</name>'''

list_name=re.findall('<name>(.+?)</name>',data)
print(len(list_name))
print(list_name)

list_member_name=re.findall('<member><name>(.+?)</name>.+?</member>',data)
print(len(list_member_name))
print(list_member_name)

(결과값)

반응형

댓글