해당 포스트에서는 파이썬(Python)을 이용하여 HTML 태그(tag) 정보들을 추출하는 방법에 대해 설명합니다.
1. INTRO
웹 크롤링(Web Crawling)을 통해 수집한 HTML 파일에서 태그(tag)들을 추출하는 방법에 대해 설명합니다. 파이썬(Python)이 오픈 소스 언어이다 보니 다른 분들이 만들어 놓은 tag 추출 라이브러리들이 있을 수 있으나, 이번 포스트에서는 일반적으로 많이 사용하는 정규표현식을 이용하는 방법에 대해 설명합니다.
2. 샘플 데이터 생성
이번 설명에서 사용할 HTML 형식을 갖춘 텍스트 데이터를 생성합니다.
testtext1 = """
My favorite website in the world is probably
<a href="www.udacity.com">Udacity</a>. If you want
that link to open in a <b>new tab</b> by default, you should
write <a href="www.udacity.com"target="_blank">Udacity</a>
instead!
"""
3. 태그(tag) 추출 함수 생성
정규표현식을 이용하여 태그(tag)를 추출하기 위한 함수를 생성합니다. 정규표현식 사용을 위해 사전에 re
모듈을 로드해야 합니다.
1) tuple
타입으로 리턴받기
import re
def findtags(text):
parms = '(\w+\s*=\s*"[^"]*"\s*)*'
tags = '(<\s*\w+\s*' + parms + '\s*/?>)'
print(re.findall(tags, text))
return re.findall(tags, text)
findtags(testtext1)
2) list
타입으로 리턴받기
list
타입으로 리턴받기 위해서는 parms=
에 조건식을 추가해 주면 됩니다.
tuple
: '(\w+\s=\s"[^"]*"\s)'list
: '(?:\w+\s=\s"[^"]*"\s)'
import re
def findtags(text):
# make this non capturing group
parms = '(?:\w+\s*=\s*"[^"]*"\s*)*'
tags = '(<\s*\w+\s*' + parms + '\s*/?>)'
print(re.findall(tags, text))
return re.findall(tags, text)
findtags(testtext1)
4. 마무리
이번 포스트에서는 파이썬(Python)을 이용하여 HTML 파일 내 태그(tag) 값을 추출하는 방법에 대해 설명하였습니다. 위 함수를 별도로 저장해 두시고 필요할 때 사용하시면 도움이 되실 거라 생각합니다.
5. 관련 링크
[1] python re.findall returns a list of tuples (strings are expected)