일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- machine learning
- 지리산 펜션
- 지리산 둘레길
- 하늘숲황토펜션
- python yield
- cuda
- 오봉 계곡
- ubuntu
- 황토펜션
- CUDA9.0
- 지리산 황토 펜션
- anaconda tensorflow
- 파이썬 GUI
- 하늘숲 황토 펜션
- 아나콘다 텐서플로
- 계곡 펜션
- LISP 함수
- Python
- 하늘숲펜션
- LISP
- tensorflow
- 인공지능
- 출근 전날
- HTML
- 파이썬 yield
- 텐서플로 설치
- 전용 계곡
- 산청 황토 펜션
- tensorflow 설치
- Today
- Total
YongWook's Notes
<xpath> 개념정리와 기본문법 본문
xpath란?
XPath uses path expressions to select nodes or node-sets in an XML document. These path expressions look very much like the expressions you see when you work with a traditional computer file system.
Xpath는 웹에 기록된 정보들에 접근하는 방식을 다룬 문법이다. 컴퓨터에서 디렉토리에 접근할 때 사용하는 방식을 그대로 웹에 적용했다.
\C:\myDocument\myFile에 접근하려면 순차적으로 C: -> myDocument -> myFile에 도달한다. 이와 비슷한 방식으로 아래의 html 코드를 보자.
<ul> <li> <p>pretty girl</p> </li> <li> <p>beautiful girl</p> </li> </ul>
pretty girl이라는 data에 닿으려면 body -> ul -> li-> p 순서로 태그에 접근해야한다.
윈도우에서 디렉토리는 중복을 허용하지 않지만 웹에서는 어쩔 수 없이 같은 태그들은 여러개 사용해야 한다. 그리고 그 태그들은 각각의 속성들도 가지고 있다. 이렇게 따로 고려할것들을 정리하여 문법으로 만든것이 xpath라고 생각하면 되겠다.
xpath기본
xpath는 다루고 싶은 모든 element들을 node라는 단위로 처리한다.
<span style="font-size=10pt;" class="top"> man-about-town </span>
위의 코드는 span, style, class, man-about-town 총 4개의 node로 구성된 것이라 할 수 있다. 이렇게 node화를 하다보면 비슷한 특성의 node들이 나오게 되는데 그들은 다음과 같다.
node |
특성 |
---|---|
element node |
태그 |
attribute node |
속성 |
text node |
태그의 내용 |
namespace node |
각 tag의 identity를 위해 붙이는 xmlns:prefix="URI" 형식의 attribute |
processing-instruction node |
어떤 instruction을 수행함 |
comment node |
주석처리된 것 |
document node |
xml 문서 그 자체를 가리키는 node |
이 태그들 중 가장 자주 사용되는 node들은 element와 attribute, text node이다.
앞서 언급한 2가지 문제. 중복 태그에 대한 접근과 특정 node에 대한 접근방법만 간단히 정리해보자.
먼저 중복된 태그를 관리하기 위해서 xpath는 배열의 개념을 사용한다. 위의 예에서
첫번째 <li>태그의 'pretty girl'은 '/body/ul/li[1]'
두번째 <li>태그의 'beautiful girl'은 '/body/ul/li[2]' 으로 지정하는 것이다.
이때, '/body/ul/li[num>2]' 를 사용하면 li태그 밑에 있는 num의 값이 2보다 큰 모든 li를 반환하게 된다. 기본적으로 nodename을 이용한다는 것은 모든 해당 nodename을 호출한다는 것으로 취급한다. 이때는 명확하게 표현하기 위해서 위의 예를 다시한번 사용하면 '/body/ul//li' 로 표기하여 두개의 <li>태그, 즉 pretty girl가 들어있는 tag와 beautiful girl이 들어있는 태그를 모두 호출할 수 있다. 이 과정들은 element node를 찾아가는 과정이다. element node는 가장 많이 쓰이는 node이기 때문에 별도의 표기 없이 사용이 가능하다.
그 다음으로 많이 쓰이는 atrribute node의 경우에는 이 앞에 @를 써 줘야 한다.
예를 들어서
//span[@style]
을 사용하게되면 style속성을 가지고 있는 span태그의 element node를 모두 가져오게 된다.
마지막으로 text node, 즉 그 태그의 내용에 접근하는 방법은 text()를 사용하는것이다.
//li/text()
위의 방식으로 모든 <li>태그 안에 있는 text내용을 추출할 수 있다.
+우리가 주로 들어가는 웹사이트의 xpath를 chrome을 이용하면 쉽게 알 수 있다.
위와 같이 알고싶은 object를 오른쪽 클릭한 후 검사를 클릭한다
오른쪽에 나타나는 개발자 도구의 해당 element를 한번더 오른쪽 클릭하고 copy -> xpath를 클릭하면 클립보드에 해당 element의 xpath가 저장된다.
이상으로 xpath에 대한 간략한 포스팅을 마친다.
<참조>
http://www.w3schools.com/xsl/xpath_syntax.asp
'-software' 카테고리의 다른 글
<LaTeX> C4.5 알고리즘 pseudo-code (0) | 2016.06.23 |
---|---|
<상식> 문화상품권 시리얼 번호의 원리 (1) | 2016.05.02 |
<영상처리> 비트맵으로 스도쿠 읽고 풀기 (0) | 2016.03.28 |