[파이썬] Beautiful Soup 4 `CData` 및 기타 특수 객체 사용하기

Beautiful Soup은 파이썬의 웹 스크래핑 라이브러리 중 하나로 매우 편리한 기능을 제공합니다. 그 중에서도 CData 및 기타 특수 객체를 사용하여 웹 페이지에서 데이터를 추출하는 방법에 대해 알아보겠습니다.

CData란?

CData는 HTML/XML 문서에서 특수한 조각을 나타내는 객체입니다. 일반적으로 주석, CDATA 섹션, 스크립트 블록 등 특정 유형의 데이터를 나타내는 데 사용됩니다.

CData 추출하기

Beautiful Soup에서 CDatabs4.CData 클래스로 표현됩니다. 이러한 CData 객체를 추출하는 방법은 다음과 같습니다.

from bs4 import BeautifulSoup

# HTML 코드
html = '''
<html>
    <head>
        <title>Example</title>
    </head>
    <body>
        <script>
            <![CDATA[
                var data = 'This is a CDATA section.';
                console.log(data);
            ]]>
        </script>
        <!-- This is a comment -->
    </body>
</html>
'''

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

# CData 추출
cdata = soup.script.string

print(cdata)  # var data = 'This is a CDATA section.\n                console.log(data);\n'

위의 예제에서 CDatasoup.script.string을 통해 추출되었습니다. 추출된 CData 객체는 문자열로 표현되며, 필요한 경우 해당 문자열을 추가 가공할 수 있습니다.

CData를 포함한 웹 페이지에서 데이터 추출하기

CData를 포함한 웹 페이지에서 데이터를 추출하는 데에도 Beautiful Soup은 매우 유용합니다. 예를 들어, 아래는 뉴스 웹 페이지에서 기사 제목과 내용을 추출하는 예제입니다.

from bs4 import BeautifulSoup
import requests

# 웹 페이지 요청
url = 'https://www.example.com/news'
response = requests.get(url)
html = response.content

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

# 기사 제목 추출
title = soup.h1.text.strip()

# 기사 내용 추출
content = soup.p.text.strip()

print(title)
print(content)

위의 예제에서 soup.h1.text.strip()는 웹 페이지에서 <h1> 태그 안의 텍스트를 추출합니다. 마찬가지로 soup.p.text.strip()<p> 태그를 추출합니다. 이를 사용하여 필요한 데이터를 쉽게 추출할 수 있습니다.

Beautiful Soup을 사용하면 CData 및 기타 특수 객체를 효율적으로 추출하여 웹 페이지에서 필요한 데이터를 가져올 수 있습니다. 이를 통해 웹 스크래핑 작업을 보다 쉽게 수행할 수 있습니다.