XPath 문법 기초. 웹 데이터 추출의 핵심
웹 스크레이핑이나 웹 크롤링을 할 때, 웹 페이지의 특정 요소를 선택하거나 추출하는 데 사용되는 강력한 도구가 있다. 그것은 바로 XPath다. XPath는 XML 문서의 부분을 쿼리하는 데 사용되는 언어로, HTML과 XML 모두에서 사용할 수 있다.
XPath란?
XPath는 XML Path Language의 약자로, XML 문서의 구조를 통해 요소, 속성, 텍스트 등을 탐색하고 선택하는 데 사용되는 쿼리 언어다. 웹 스크레이핑 도구나 브라우저 확장 프로그램에서도 자주 사용된다.
기본 문법
노드 선택: 가장 기본적인 형태의 XPath는 노드를 선택하는 것이다.
/
: 루트 노드부터 시작//
: 문서의 어디에서나.
: 현재 노드..
: 부모 노드예:
//p
는 모든<p>
태그를 선택한다.
속성 선택:
@
기호를 사용하여 속성을 선택할 수 있다.예:
//a[@href]
는 href 속성을 가진 모든<a>
태그를 선택한다.텍스트 선택:
text()
함수를 사용하여 노드의 텍스트를 선택한다.예:
//p/text()
는 모든<p>
태그의 텍스트를 선택한다.와일드카드: 여러 노드를 한 번에 선택할 수 있다.
*
: 모든 요소 노드@*
: 모든 속성
축: XPath에는 노드를 선택하기 위한 다양한 방법을 제공하는 축이 있다.
ancestor
: 현재 노드의 조상 노드child
: 현재 노드의 자식 노드descendant
: 현재 노드의 자손 노드예:
//p/child::a
는 모든<p>
태그의<a>
자식 노드를 선택한다.
조건과 함수
XPath는 조건과 함수를 사용하여 더 복잡한 쿼리를 작성할 수 있다.
조건: 대괄호
[]
안에 조건을 작성하여 특정 조건을 만족하는 노드만 선택할 수 있다.예:
//a[@href='https://example.com']
는 href 속성 값이 'https://example.com'인 모든<a>
태그를 선택한다.함수: XPath에는 문자열, 숫자, 날짜 및 시간 처리를 위한 다양한 함수가 있다.
contains()
: 특정 문자열이 포함된 노드 선택starts-with()
: 특정 문자열로 시작하는 노드 선택count()
: 노드 집합의 수를 반환예:
//p[contains(text(), 'XPath')]
는 'XPath'라는 텍스트를 포함하는 모든<p>
태그를 선택한다.