HTML Parsing
HTML Parsing 이라고 하면 HTML 문서에서 데이터 또는 정보를 추출하는 것을 포함합니다. 형식이 정해진 문서나 데이터에서 원하는 값을 추출하는 것을 Parsing 이라고 부릅니다.
Python Library - BeautifulSoup
Beautiful Soup 은 HTML이나 XML 문서를 웹 스크래핑하고 Parsing 이 가능한 인기 있는 파이썬 라이브러리입니다. 이 라이브러리를 사용하면 HTML 문서에서 편하게 데이터를 탐색하고 추출할 수 있습니다.
아래 예시 코드에서는 bs4 모듈에 BeautifulSup 클래스를 import 하여 HTML 문서와 Parser(이 경우 'html.parser')를 전달하여 BeautifulSup 개체를 생성합니다. 그런 다음 BeautifulSup 에서 제공하는 다양한 Method 와 Selector 를 사용하여 HTML 요소에서 데이터를 추출합니다. HTML 문서에서 제목, 제목, 단락 및 목록 항목을 추출하여 데이터를 출력하도록 처리합니다.
from bs4 import BeautifulSoup
# HTML document to parse
html_doc = """
<html>
<head>
<title>Sample HTML Document</title>
</head>
<body>
<h1>Welcome to Python HTML Parsing</h1>
<p>This is a sample paragraph.</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</body>
</html>
"""
# Create a BeautifulSoup object
soup = BeautifulSoup(html_doc, 'html.parser')
# Extract data from HTML elements
title = soup.title.string
heading = soup.h1.string
paragraph = soup.p.string
list_items = soup.find_all('li')
# Print the extracted data
print("Title:", title)
print("Heading:", heading)
print("Paragraph:", paragraph)
print("List Items:")
for item in list_items:
print("-", item.string)
BeautifulSoup + 정규 표현식 사용(re module)
Beautiful Soup 자체가 HTML에서 데이터를 탐색하고 추출하는 강력한 방법을 제공하는 반면, 정규 표현식(re module) 과 결합하여 사용할 경우, 복잡한 매칭과 필터링 작업을 수행할 수도 있습니다.
아래 예제 코드에서는 Beautiful Soup 과 함께 Regular Expression 을 위한 Library 인 re module 를 import 하고 html sample 을 선언합니다.
from bs4 import BeautifulSoup
import re
html_doc = """
<html>
<body>
<h1>Example HTML</h1>
<p class="content">This is a paragraph.</p>
<p>This is another paragraph.</p>
<a href="https://www.example.com">Link</a>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
실제 실행하는 부분에서는 soup.find_all( ) 을 통해 원하는 데이터를 찾게 됩니다. 이 때, 사용된 re.complie 을 통해 필터링할 패턴을 정해줍니다. 사용된 패턴은 re.complie('^con') 입니다. 'p' tag class 의 name 이 'con' 으로 시작할 경우( <p class="content">)를 찾기 위한 패턴입니다.
if __name__ == '__main__':
# Find all paragraphs with a class attribute that starts with 'con'
paragraphs = soup.find_all('p', class_=re.compile('^con'))
# Find all links with an href attribute containing 'example'
links = soup.find_all('a', href=re.compile('example'))
# Extract the text from the matched elements
for paragraph in paragraphs:
print(paragraph.get_text())
for link in links:
print(link.get('href'))
실행 결과는 다음과 같습니다.
This is a paragraph.
https://www.example.com
정규 표현식 re module 에 대한 내용은 아래 링크에서 좀 더 상세하게 언급하고 있습니다. 문자열 처리를 위해 re module 을 많이 사용해본다면 다른 라이브러리 사용시에도 응용할 수 있겠습니다.
Python 파이썬으로 정규 표현식 사용 - re module
Regular Expression (정규 표현식) 파이썬에서 정규 표현식에 사용되는 기본 라이브러리는 're 모듈'이다. 주로 문자열에 대한 패턴(정규식)을 사용하여 데이터로 부터 검색, 대체 등의 기능 및 가능한
blogwhatever.tistory.com
Install 방법
1. Check Python version
BeautifulSoup을 설치하기 전에 시스템에 파이썬이 설치되어 있는지 확인해야 합니다. 이유는 버전에 따라 지원하는 BeautifulSoup 을 맞춰서 설치해야 하기 때문에, 명령 프롬프트 또는 단말에서 다음 명령어를 실행하여 Python 3.x 이상이 설치되어 있는지 확인 하세요. 파이썬이 설치되지 않았거나 이전 버전이 있는 경우 설치 및 업데이트한 후 다음 단계를 진행해야 합니다.
python --version
2. Install BeautifulSoup
Python 3.x 이상의 버전이 설치되어 있다면 pip를 이용해 BeautifulSoup4 를 설치할 수 있습니다.명령 프롬프트 또는 단말을 열고 다음 명령어를 실행합니다.
- 버전에 따라 BeautifulSoup3 는 설치가 안되는 경우가 있으니 최신 버전으로 업데이트 후 BeautifulSoup4 를 설치하시는 것을 추천합니다.
pip install beautifulsoup4
3. Verify installation
설치가 완료된 후 BeautifulSoup이 올바르게 설치되었는지 확인하려면 파이썬 인터프리터를 열거나 파이썬 스크립트를 만들고 아래와 같이 BeautifulSoup 모듈을 가져옵니다.
from bs4 import BeautifulSoup
Import 시에 Error 가 없다면, 시스템에 BeautifulSoup 이 성공적으로 설치되었음을 의미합니다.
그외 BeautifulSoup 을 사용하지 않고 기본적인 Parser 를 사용하고자 하신다면 Simple HTML Parser 도 제공하고 있으니 아래 홈페이지를 참고하시면 좋을 것 같습니다.
https://docs.python.org/ko/3/library/html.parser.html
html.parser — Simple HTML and XHTML parser
Source code: Lib/html/parser.py This module defines a class HTMLParser which serves as the basis for parsing text files formatted in HTML (HyperText Mark-up Language) and XHTML. Example HTML Parser...
docs.python.org
이상입니다.
읽어주셔서 감사합니다.
'IT > Python' 카테고리의 다른 글
Python 파이썬으로 String 문자열 처리 (0) | 2023.06.23 |
---|---|
Python 파이썬으로 정규 표현식 사용 - re module (0) | 2023.06.22 |
Python 파이썬으로 Excel 다루기 - openpyxl (0) | 2023.06.18 |
Python 파이썬 기본 문법 (0) | 2023.06.18 |
Python 파이썬 프로그래밍 소개 (0) | 2023.06.18 |