[python] CSS 선택자 및 XPath 사용하기

웹 크롤링이나 웹 스크래핑을 할 때, 웹 페이지의 특정 요소를 선택하기 위해 CSS 선택자와 XPath를 사용하는 경우가 많습니다. 이번 포스트에서는 Python을 사용하여 CSS 선택자와 XPath를 어떻게 활용할 수 있는지 알아보겠습니다.

CSS 선택자

CSS 선택자는 HTML 문서의 요소를 선택하기 위한 방법입니다. BeautifulSoup 라이브러리를 사용하여 HTML 페이지를 파싱한 후, CSS 선택자를 활용하여 원하는 요소를 선택할 수 있습니다. 아래는 CSS 선택자를 사용하여 element를 선택하는 예시 코드입니다.

from bs4 import BeautifulSoup

html = '''
<html>
<head>
    <title>웹 페이지 제목</title>
</head>
<body>
    <div class="content">
        <h1>제목</h1>
        <p>본문 내용</p>
    </div>
</body>
</html>
'''

soup = BeautifulSoup(html, 'html.parser')
title = soup.select('title')  # <title> 요소 선택
content = soup.select('.content')  # class가 'content'인 요소 선택

위 코드에서 soup.select 메서드를 사용하여 CSS 선택자를 지정하고, 선택된 요소들을 변수에 저장할 수 있습니다. select 메서드의 인자로 CSS 선택자를 전달하면 해당 선택자에 해당하는 요소들이 리스트로 반환됩니다.

XPath

XPath는 XML 문서나 HTML 문서의 요소를 선택하기 위한 언어입니다. lxml 라이브러리를 사용하여 XML이나 HTML 페이지를 파싱한 후, XPath를 활용하여 원하는 요소를 선택할 수 있습니다. 아래는 XPath를 사용하여 element를 선택하는 예시 코드입니다.

from lxml import etree

xml = '''
<root>
    <title>페이지 제목</title>
    <content>
        <h1>제목</h1>
        <p>본문 내용</p>
    </content>
</root>
'''

root = etree.fromstring(xml)
title = root.xpath('/root/title')  # <title> 요소 선택
content = root.xpath('//h1')  # 모든 <h1> 요소 선택

위 코드에서 root.xpath 메서드를 사용하여 XPath를 지정하고, 선택된 요소들을 변수에 저장할 수 있습니다. xpath 메서드의 인자로 XPath를 전달하면 해당 선택자에 해당하는 요소들이 리스트로 반환됩니다.

결론

이렇게 Python을 사용하여 CSS 선택자와 XPath를 활용하여 웹 페이지의 요소를 선택할 수 있습니다. 이를 활용하면 웹 크롤링이나 웹 스크래핑 작업을 보다 쉽게 수행할 수 있습니다. 자세한 내용은 BeautifulSoup 라이브러리와 lxml 라이브러리의 공식 문서를 참고하시기 바랍니다.