PHP

[PHP Simple DOM Parser] PHP에서 DOM Parser를 이용해보자.

bang2001 2014. 7. 18. 14:16

HTML을 읽고 사용하기 위한 파서는 크게 Dom Parser와 SAX Paser가 있습니다. SAX 파서는 HTML을 여러 엘레먼트를 읽기 위한 용도로 주로 사용되고 (대신 처리속도가 빠르고 가벼움), Dom Parser는 HTML 각각의 엘레먼트에 대해 읽기뿐만 아니라 조작도(수정/삽입/삭제 등) 할 수 있습니다. (대신 SAX 파서에 비해 느리고 무거움-상대적임)


그 중에서 PHP로 구현된 DOM Parser에 대해서 안내를 하고자 합니다. 먼저 참고 URL입니다.


참고URL : http://simplehtmldom.sourceforge.net/


무료로 사용할 수 있는 Dom Parser 중 하나로 매우 간단하고 쉽게 사용할 수 있는 라이브러리입니다. 기본적인 사용방법은 URL을 통해 특정 웹 페이지를 읽어들이고 jQuery처럼 혹은 CSS처럼 선택자를 사용하여 내가 원하는 엘레먼트에 접근하여 조작하는 방식입니다.




참고 URL에 접속하시면 위와 같은 화면을 볼 수 있습니다. (이 게시물을 작성하고 난 뒤에 해당 홈페이지 화면이 변경 될 수 있습니다.) 위 내용을 보시면 PHP5 이상 버전에서 사용가능하고, Sourceforge에서 해당 라이브러리를 다운받을 수 있도록 링크가 걸려있는 것을 볼 수 있습니다.


또한 가운데 부분에 4개의 탭으로 사용자에게 사용법을 안내하고 있습니다. 그 중에서 [How to get HTML elements?] 부분을 살펴보겠습니다.


// Create DOM from URL or file

$html = file_get_html('http://www.google.com/');

// Find all images

foreach($html->find('img') as $element)

echo $element->src . '<br>';

// Find all links

foreach($html->find('a') as $element)

echo $element->href . '<br>';



첫 문장은 문자열로 전달된 URL로부터 HTML 내용을 읽어들이는 부분입니다. 두 번째 문장은 해당 HTML 문서로부터 img 엘레먼트의 내용을 찾아내고, 반복문을 통해서 해당 웹 페이지에 포함된 모든 이미지를 출력하는 부분입니다. 마지막으로 세 번째는 엘레먼트 뿐만 아니라 해당 엘레먼트의 속성까지도 접근해서 출력하는 것을 보여주는 부분입니다.


이처럼 jQuery와 비슷한 면이 있고, CSS의 선택자와 비슷한 면이 있습니다. 사용자가 기존에 jQuery나 CSS를 알 고 있는 경우 쉽게 가져다 쓸 수 있도록 하기 위한 배려로 보입니다.


이처럼 읽어들일 수 있고, 수정도 할 수 있습니다. 참고 URL을 참고하시기 바랍니다.