일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- judge
- Linux
- Package
- CUDA
- pandas
- Python
- Laravel
- Flask
- KAKAO
- evaluation
- AI
- Paper
- Mac
- numpy
- pytorch
- file
- Converting
- list
- enV
- TORCH
- docker
- GitLab
- DB
- format
- PostgreSQL
- Database
- Container
- git
- Windows
- LLM
Archives
- Today
- Total
Daily Develope
[Web] XPath 간단 정리 본문
기술 (Description)
: root인 html 노드부터 시작해 찾으려는 노드까지의 경로를 기술해 필요한 노드를 선택하기위해 사용
표기법 | 설명 |
---|---|
/ | root 노드로부터의 경로 |
// | 현재 노드로부터 찾는 Element의 경로 생략 |
. | 현재 노드 |
.. | 부모 노드 |
@ | 속성 선택 |
문법 (Syntax)
: '[]' 대괄호로 명시하며, 조건문은 대괄호 안에 기재한다.
예시 | 설명 |
---|---|
/html/body/div[1] | body의 첫번째 div 선택 |
/html/body/div[last()] | body의 마지막 div 선택 |
//div[@class="section01"] | root로부터 모든 div 중 class가 section01로 정의된 div들만 선택 |
/html/body/div[@class="section01"]/p | body의 div 중 class가 section01로 정의된 div의 p 선택 |
Wildcard
예시 | 설명 |
---|---|
//* | root아래의 모든 노드 선택 |
/html/body/div[1]/* | body의 첫 번째 div의 모든 자식노드 선택 |
Axes
명칭 | 설명 |
---|---|
attribute | 현재 노드의 모든 속성 선택 |
namespace | 현재 노드의 모든 namespace 노드 선택 |
self | 현재 노드 선택 |
ancestor | 현재 노드의 모든 상위노드 선택 |
ancestor-or-self | 현재 노드를 포함한 모든 상위노드 선택 |
descendant | 현재 노드의 모든 하위노드 선택 |
descendant-or-self | 현재 노드를 포함한 모든 하위노드 선택 |
parent | 현재 노드의 부모 노드 선택 |
child | 현재 노드의 자식 노드 선택 |
following | 현재 노드가 끝나는 지점부터 문서의 끝 부분 까지의 전체 노드 선택 |
following-sibling | 현재 노드 이후의 모든 형제 노드 |
preceding | 전체 문서에서 현재 노드의 이전의 모든 노드 선택 (조상, 속성, namespace 노드 제외) |
preceding-sibling | 현재 노드 이전의 모든 형제 노드 |
예시)
//ul[1]/li[1]/span/self::text() = 첫 번째 ul의 첫 번째 li 내부 span 텍스트 선택
//td[1]/following-sibling::td[2] = 첫 번째 td를 제외한 이후의 형제 td들 중 두 번째 선택
조건문 (Condition)
Contains
: 조건을 포함하는 노드 선택
예1) img의 class로 dog값이 설정된 img 노드만 선택
//img[contains(@class, "dog")]
예2) p 노드 중 "my name" 텍스트를 포함하는 노드만 선택
//p[conatins(text(), "my name")]
Not
: 부정 / 제외
예) img의 class로 dog값이 설정된 img 노드만 제외하고 선택
//img[not(contains(@class, "dog"))]
Or
: 만족하는 조건들을 모두 선택
예) img의 class로 dog값이나 cat값으로 설정된 img 노드 모두 선택
//img[contains(@class, "dog") or contains(@class, "cat")]
And
: 모든 조건을 만족하는 노드 선택
예) img의 class로 dog값과 bark값이 모두 설정된 img 노드 선택
//img[contains(@class, "dog") and contains(@class, "bark")]
Google Chrome 디버그 모드에서 Xpath 사용
1. F12를 눌러 디버그모드 활성화
2. Console 탭에서 아래와 같이 입력
$x('xpath조건문')
#예) li중에서 자식 div가 text값으로 abc를 가지는 li만 추출
$x('//li[contains(div/text(), "abc")]')
Ref.
'Develope > Web' 카테고리의 다른 글
[SSL] NginX SSL 인증서 설정 (0) | 2023.08.17 |
---|---|
[WEB] 동적 웹페이지 처리 with Python (0) | 2023.05.09 |
[Web] curl & program code 변환 (관련링크) (0) | 2023.03.27 |
[Web] Multipart/form-data 요청(Request) in Python (0) | 2023.03.27 |
[Request] Content-Type의 데이터별 http 요청(requests) 코드 예제 (0) | 2022.11.07 |