TagCloud

Friday, August 24, 2012

XPAth Helper - chrome extentions

HTML, XML(RSS) 문서를 파싱하는 과정에서 특정 노드의 데이터를 추출해야 할 때가 있습니다. XPath 를 이용하여 데이터를 추출하면 되지만, 반복되는 작업이 많아질경우 XPath Query 를 생성하고 검증하는데 많은 시간이 소요될 것입니다.

크롤링과 파싱을 위한 프로젝트를 진행하면서 다양한 구조의 DOM 구조를 분석해야 했었는데, Chrome 확장 프로그램인 XPath Helper 를 발견하게 되었습니다.

XPath 추출을 위한 구글 크롬 확장 프로그램인 XPath Helper 의 소개는 다음과 같습니다.
https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl

사용법은 간단합니다.

1. 크롬 실행 후, 새 탭에서 분석하고자 하는 웹페이지로 이동한다.
2. [ Ctrl + Shift + X ] 명령으로 XPath Helper 콘솔을 연다.
3. [ Shift ] 키를 누르고 있는 상태에서 추출하고자 하는 정보의 위치로 드래그 한다.
4. XPath Helper 콘솔에서 추출된 Query 와 Result 를 확인한다.




































Query 창에 자동으로 추출된 XPath 경로는 절대경로 입니다. Query 창은 XPath 의 다양한 문법들이 적용되므로 필요에 따라서 아래와 같이 상대경로를 입력하여 추출된 데이터를 검증할수도 있습니다. 예를 들어
/html/body/div[@id='wrap']/div[@id='container']/div[@id='column_left']
/div[@id='news_cast']/div[@class='cast_cnt']/div[@id='cast_article']/div[@id='cast_articles']

와 같이 절대경로로 추출된 XPath는 아래와 같이 상대경로로 변경하여 문법 검증이 가능합니다.
//div[@id='cast_articles']

또한 아래와 같이 substring도 이용이 가능합니다.
substring(//div[@id='cast_articles'],0,20)

아래는 id 에트리뷰드가 start-with 로 시작하는 div 를 선택하는 코드입니다.
//div[starts-with(@id, 'post-body-')]

XPath 문법에 대한 자세한 내용은 XPath 관련 문서를 참고하세요.