HTML/XML을 파싱하고 데이터를 추출하는 오픈 소스 파이썬 라이브러리
Beautiful Soup은 복잡한 HTML/XML을 파싱하고, 텍스트와 링크를 추출하며, 트리를 탐색하고 최신 웹 스크래핑 워크플로우를 지원하는 선도적인 오픈 소스 파이썬 파싱 라이브러리입니다.
Beautiful Soup이란 무엇인가요?
웹 스크래핑은 웹사이트에서 유용한 정보를 추출해야 하는 데이터 과학자, 개발자, 연구자에게 필수적인 기술이 되었습니다. Beautiful Soup는 HTML 및 XML 문서를 파싱하기 위한 가장 인기 있고 사용하기 쉬운 Python 라이브러리 중 하나입니다. 2004년에 만들어진 이 강력한 도구는 웹 스크래핑 프로젝트에서 프로그래머들의 수많은 시간을 절약해 왔습니다. 라이브러리의 직관적인 API, 훌륭한 문서화, 활발한 커뮤니티 지원 덕분에 초보자와 숙련된 개발자 모두 효율적으로 웹 데이터를 추출할 수 있습니다.
Beautiful Soup은 HTML 및 XML 파일에서 데이터를 추출하도록 특별히 설계된 파이썬 라이브러리입니다. 2004년부터 웹 스크래핑 프로젝트에서 프로그래머들의 수시간 혹은 수일의 작업을 절감해 온 강력한 파이썬 라이브러리입니다. 몇 줄의 코드만으로도 복잡한 쿼리를 수행할 수 있으며, 단순함과 사용 용이성, 모든 링크 찾기, 텍스트 내용 추출, 자동 인코딩 변환, 파서 유연성, 견고한 오류 처리, 웹 페이지에서 링크 검색 및 추출 등 다양한 기능을 제공합니다.
Beautiful Soup 라이브러리는 HTML 및 XML 문서에서 데이터를 추출하는 종종 좌절스러운 작업을 직관적인 파이썬 방식으로 변환하여, 구조가 부실한 웹 콘텐츠를 깔끔하게 정리된 파스 트리로 바꾸고 간단한 메서드로 탐색하고 검색할 수 있게 합니다. 전통적으로 수시간이 걸리던 작업을 Beautiful Soup을 사용하면 몇 분 안에 수행할 수 있습니다. 이는 웹 스크래핑 세계에 입문하는 파이썬 개발자들에게 업계 표준으로 자리 잡고 있습니다. 단순함과 다양한 파서의 강력함이 결합되어 정적 웹사이트에서 데이터를 추출하는 데 탁월한 선택이 됩니다.
Beautiful Soup 시작하기
Beautiful Soup을 설치하는 권장되고 가장 쉬운 방법은 pip를 사용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.
pip을 통해 Beautiful Soup 라이브러리 설치
pip install beautifulsoup4 수동으로 설치할 수도 있습니다; 최신 릴리스 파일을 Beautiful Soup 웹 페이지에서 직접 다운로드하십시오.
여러 파서 사용하기
Beautiful Soup 라이브러리는 모든 파싱을 직접 수행하지 않고, 대신 Python 내장 html.parser, 빠른 lxml 파서, 브라우저와 유사한 html5lib와 같은 성숙한 파서 위에 위치합니다. 필요에 따라 속도 또는 표준 준수를 우선시할 수 있습니다. 이 아키텍처는 필요에 가장 적합한 파서를 선택하고, 파싱 속도와 유연성을 교환하며, Beautiful Soup 코드를 변경하지 않고도 다양한 파싱 전략을 시도할 수 있는 유연성을 제공합니다. 다음 간단한 코드는 개발자가 Beautiful Soup와 함께 다양한 파서를 사용할 수 있는 방법을 보여줍니다.
Python 앱에서 HTML 문서를 파싱하기 위해 여러 파서를 사용하는 방법은?
# Using different parsers with Beautiful Soup
html_doc = "샘플 콘텐츠
"
# Using lxml parser (fast)
soup_lxml = BeautifulSoup(html_doc, 'lxml')
# Using html5lib parser (slower but more lenient)
soup_html5lib = BeautifulSoup(html_doc, 'html5lib')
# Using Python's built-in parser
soup_builtin = BeautifulSoup(html_doc, 'html.parser')
웹 페이지에서 링크 추출하기
링크 스크래핑은 일반적인 웹 스크래핑 작업으로, 특히 웹 크롤러를 구축할 때 유용합니다. 오픈 소스 Beautiful Soup 라이브러리는 Python 애플리케이션 내에서 웹 페이지를 로드하고 링크를 추출하는 기능을 포함하고 있습니다. 다음 간단한 코드 예제는 requests 라이브러리를 사용하여 실시간 웹 페이지를 가져오고, 그런 다음 Python 애플리케이션 내에서 모든 앵커 태그를 추출하는 과정을 보여줍니다.
Python을 사용하여 웹 페이지에서 링크를 추출하는 방법은?
from bs4 import BeautifulSoup
import requests
# Fetch a real webpage
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Extract all links
links = soup.find_all('a')
print(f"Found {len(links)} links:")
for link in links:
href = link.get('href')
text = link.get_text().strip()
print(f"Text: {text} | URL: {href}")
# Filter links by criteria
external_links = []
for link in soup.find_all('a'):
href = link.get('href')
if href and href.startswith('http'):
external_links.append(href)
print(f"\nFound {len(external_links)} external links")
특정 HTML 요소 검색하기
Beautiful Soup의 가장 큰 강점 중 하나는 마치 평문 영어를 읽듯이 자연스럽게 HTML을 검색할 수 있다는 점입니다. 복잡한 DOM API를 다루는 대신 원하는 것을 기술하면 Beautiful Soup이 찾아줍니다. 예를 들어 페이지의 모든 링크를 찾고 싶다고 가정해 보세요. 아래 코드 예제에 표시된 대로 find_all 메서드를 사용할 수 있습니다. 이 메서드는 모든 링크 태그의 리스트를 반환합니다. 그런 다음 우리는 이를 반복하면서 URL과 텍스트를 추출하여 Python API를 사용해 보이는 링크 이름을 얻습니다.
Python API를 통해 웹 페이지에서 특정 HTML 요소를 검색하고 추출하는 방법은?
# Extract all anchor tags
links = soup.find_all('a')
for link in links:
href = link.get('href')
text = link.text.strip()
print(f"Text: {text} | URL: {href}")
자동 인코딩 처리
Beautiful Soup의 가장 편리한 기능 중 하나는 자동 인코딩 변환입니다. 라이브러리는 들어오는 문서를 자동으로 Unicode로 변환하고 나가는 문서는 UTF-8로 변환하여 웹 스크래핑에서 가장 흔한 골칫거리 중 하나를 없애줍니다. 문서에 인코딩이 명시되지 않은 경우에만 인코딩을 생각하면 되며, Beautiful Soup은 인코딩을 자동으로 감지할 수 없습니다. 이러한 드문 경우에는 원래 인코딩을 수동으로 지정하면 됩니다.