PHP로 문서의 HTML DOM을 손쉽게 가져오자~

2008/08/08 23:46

Easy Screen Scraping in PHP with the Simple HTML DOM Library


PHP를 이용해서 특정 웹문서의 HTML DOM을 손쉽게 가져올수 있는 라이브러리입니다.

만들기가 영 손이 많이 갈것 같아서 귀찮았었는데

좋은 라이브러리가 나타났습니다.


온라인 document : http://simplehtmldom.sourceforge.net/manual.htm



문서는 다음과 같은 방법으로 가져옵니다.

직접 HTML string을 이용한 방법과 URL로의 접근, 그리고 local 문서로의 접근 이렇게 3가지의 방법이 있습니다.

// Create a DOM object from a string
$html = str_get_html('<html><body>Hello!</body></html>');

// Create a DOM object from a URL
$html = file_get_html('http://www.google.com/');

// Create a DOM object from a HTML file
$html = file_get_html('test.htm');



그리고


// Find all anchors, returns a array of element objects
$ret = $html->find('a');

// Find (N)th anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', 0);

// Find all <div> which attribute id=foo
$ret = $html->find('div[id=foo]');

// Find all <div> with the id attribute
$ret = $html->find('div[id]');

// Find all element has attribute id
$ret = $html->find('[id]');



이렇게 특정 엘리먼트를 발견할수 있고요.


엘리먼트의 속성을 가져올땐 이렇게


// Get a attribute ( If the attribute is non-value attribute (eg. checked, selected...), it will returns true or false)
$value = $e->href;

// Set a attribute(If the attribute is non-value attribute (eg. checked, selected...), set it's value as true or false)
$e->href = 'my link';

// Remove a attribute, set it's value as null!
$e->href = null;

// Determine whether a attribute exist?
if(isset($e->href))
        echo 'href exist!';




그리고 마음껏 DOM tree를 돌아다닐수도 있습니다.


// If you are not so familiar with HTML DOM, check this link to learn more...

// Example
echo $html->find("#div1", 0)->children(1)->children(1)->children(2)->id;
// or
echo $html->getElementById("div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');





참 쉽죠?


무엇보다도 이걸 이용해서

RSS 제공하지 않는 곳의 게시물을 손쉽게 비공식 적으로 RSS로 발행할수 있을것 같습니다.

기쁘군요! 으하하하하하!

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TAG DOM, HTML, php
블로그코리아에 블UP하기

제대로된 DOM을 사용하고 계십니까?

2007/07/13 22:19
현업에 종사하는 많은 개발자들은 아직도 IE에서만 적용되는 name속성을 이용해서 DOM을 제어하고 있다.

IE가 주름잡던 시대에 javascript를 공부한 이들을 뭐라고 나무라고 싶은 마음은 없다.

하지만 언제까지 그러한 객체 핸들링을 유지할 셈인가요?

내가 IE 쓰고 있으면 그만인가요?

사장님이 모르면 그만인가요?

클라이언트가 모르면 그만인가요?

자바스크립트 뭐 그냥 얼렁뚱땅 만들어 놓고 무시하는 그런존재인건가요?

웹표준과 파이어폭스 및 기타 브라우저, 그냥 잠깐 반짝했다가 수그러드는 유행으로 보고 계신가요?


ajax가 점점 더 부각을 받으면서

javascript가 아주 중요한 존재가 되어버렸다.


"DOM 배우고 싶은데 뭘로 배워요? 자료가 없어요. w3c에 http://www.w3.org/DOM/ 이거 한글버전도 없고."


이러한 분들께 책 한권 소개드립니다.


"DOM스크립트"

예스24


위의 예스24링크를 통해 DOM스크립트 책내용을 살펴보고자 하면

페이지가 로딩됨과 동시에 다음 세개의 경고메세지가 나오네요

TypeError:dom has no properties
AAA
TypeError:dom has no properties


당신이 만든 홈페이지도 누군가에게 이런식으로 보여지고 있습니다.

공부하세요(노현정버전)




크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
블로그코리아에 블UP하기

최근댓글

최근 트랙백