내가 한 노력들

[ Python ] 웹 스크래핑에 필요한 기본 IT지식 (XPath) 본문

IT 공부/python

[ Python ] 웹 스크래핑에 필요한 기본 IT지식 (XPath)

JONGI-N CHOI 2022. 1. 18. 16:05

XPath

XPath란, 웹 스크래핑을 하기위해서 특정 태그의 값을 가져오고 싶으면, 그 태그의 위치를 알아야하는데 그 위치를 의미하는 것이 XPath다.

 

비슷한 태그, 엘리먼트가 있을 경우를 대비해서, 정확한 위치를 입력하기 위함

/html/body/div/span/a....

 

하지만, 이렇게 하나하나 나열하게 되면, 복잡하다. 

속성값이 유니크한 값이 있을 경우에는 줄여서 사용하는 것이 가능하다.

//*[@id="user_name"]

모든 문서에서 id 속성값이 user_name인 것을 찾아라라는 의미

 

'/' 는 현재 엘리먼트 위치를 의미하고, 

'//' 는 상위 엘리먼트 위치를 의미합니다. 

'*' 는 모든 태그 상관없이 

'@' 속성을 의미 

 

 

XPath 쉽게 가져오는 법

네이버의 검색창부분의 XPath를 가져오고 싶은 경우 

브라우저 검사창을 킨다음에, 해당 엘리먼트에서 우클릭 -> 복사 -> XPath 복사

//*[@id="sform"]/fieldset/div

그럼 위와 같은 XPath가 나온다. 

즉, 모든 문서위치에서 속성 id 값이 sform인 곳에서 하위 fieldset 태그의 하위 div태그 위치를 가르키고있다. 

 

/html/body/div[2]/div[2]/div[1]/div/div[3]/form/fieldset/div

전체 XPath를 복사하면, 위와같은 XPath도 가져올 수 있습니다. 

위의 XPath와 동일한 위치를 가르키고있지만, 훨씬 길이가 길어지고 복잡한 것을 볼 수 있습니다.