Javascript Link처리가 가능한 Web Cralwer

우리나라(특히 관공서)의 홈페이지를 자세히 들여다 보면 특이한(?) 방식으로 HyperLink를 구성하는 걸 볼 수가 있다.

보통의 링크는
<A href="http://esconsult.egloos.com/" target="_blank">Enterprise Search Consulting</A>
<A href="../index.html">메인</A>
처럼 사용되는데 비해 Javascript가 사용되는 링크는
<A href="javascript:gomain();">메인페이지</A>
<A href="#" onclick="gomain()">메인페이지</A>
<TD onclick="gomail(1)">메인페이지로 이동</TD>
처럼 사용된다.

이는 Web Cralwer를 만드는 사람 입장에서 보면 굉장한 벽이 아닐 수 없다.
왜냐하면 Javascript링크를 제대로 처리하려면 Javascript interpreter와 HTML DOM를 구현해야하지만, 이를 제대로 구현하기가 절대 쉽지 않기 때문에 이 둘을 구현하는 것만으로도 Web Cralwer를 구현하는 이상의 노력이 필요하기 때문이다.
따라서 일반적으로 포털의 Web Cralwer는 Javascript형태의 링크를 처리하지 못하는 것이 대부분이다.

Microsoft Internet explorer를 후킹하여 비교적 쉽게 이를 해결할 수 있으나, 빠른 속도를 필요로 하는 수집에서는 손해를 볼 수 밖에 없다.

그래서!!! IE를 사용하지 않고 Javascript를 처리하는 모듈을 만들어 봤다.

참조 : javascript link처리가 가능한 web page 분석 모듈

전체적으로 java를 이용하였으며, 웹페이지를 가져와서 link와 text를 분리하는 것만 만들었다.
안정화 및 속도 검증은 하지 않았지만, IE를 이용하는 방식보다는 (훨씬) 빠를 것으로 기대한다.
하지만, 역시 javascript interpreter와 HTML DOM은 많이 무거운게 사실이다.
또한, 자바스크립트를 제대로 처리하려면 HTML 랜더링까지 해야하니 속도/부하면에서 다른 로봇과 차이가 날 수 밖에 없다.

한번씩 테스트 해 보시고, 가능성(?) 여부를 판단해 주시면 감사 ^^

by 슈퍼맨 | 2009/02/03 21:07 | 기술 | 트랙백 | 덧글(4)

트랙백 주소 : http://esconsult.egloos.com/tb/1345534
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 루씬 at 2009/02/04 18:14
post 방식까지 무리없이 처리된다는것 자체가 Great네요 ㅎㅎ..
Commented by 슈퍼맨 at 2009/02/05 09:06
ㅎㅎ 감사합니다.
post방식은 post로 처리를 해야 정확하게 페이지를 가져올 수 있는 경우가 많아서요...^^;
Commented by 페리레이지 at 2009/03/10 10:30
자바스크립트에서 링크 추출하는 것에 대해서 알아보다가 방문합니다~ ㅎㅎ
이 정도까지 만드신게 부럽네요~ 혹시 만드실때 참고하신 자료나 유용한 링크가있으면 알수 있을까요?
Commented by 슈퍼맨 at 2009/03/10 16:03
저랑 완벽하게 같은 방식은 아니지만
http://kldp.org/node/71088 <== 여기를 참조하시면 도움이 되실 겁니다.

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶