JSOUP을 사용하여 스크래핑 (웹 정보를 분석하여 필요정보를 정제하는 과정) 을 하는 것에 대해 기록을 남겨봅니다.


#1. USER_AGENT 설정


=> 별것 아니라 생각될 수 있는 부분이겠지만... 브라우저 정보를 서버사이드에서 판독하여 그에 맞는 화면을 구성하도록 지원합니다.


MOBILE 
(아이폰)

 Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1

 WEB

(맥크롬최신)

 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36

 WEB

(윈도구버전)

 Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6


위와 같이 각각 다른 USER_AGENT 정보를 설정하여 웹을 조회해 보면 각각 화면이 다르게 보이는 것을 확인할 수 있다.


특히 구버전으로 조회하는 경우 이런 케이스가 있는데 javascript를 지원하지 않아서 랜더링된 html로 바로 보여주는 case가 존재한다.

(이땐 보통 많은 점검과정이 생략되는 경우가 많음, 서버사이드에서 체크를 할 수 없기 때문 )


모바일, 웹, 구버전 브라우저 등을 적절하게 섞어서 잘 해보면 스크래핑 안될 사이트도 되는 경우가 있다 ㅎㅎ


#2. javascript를 통한 렌더링 된 dom의 처리 방안


위와 같은 경우는 좀 난감하다 소스는 javascript 밖에 없는데 실제는 화면이 렌더링 되니 jsoup로 백날 해봐야 건져지는 것이 없다. 이럴 땐 phandomjs 등을 사용하여 headless browser 기능을 활용하여 phantomjs에서 랜더링된 html 정보를 읽어들여 후처리를 하는 방법이 있다.

( 확인사항 : phantomjs를 설치해야 되며 이후 processor 또는 driver로 접근하여 해당 정보를 catch 해야 됨 )




위 2가지 정보만 잘 조합해봐도 많은 것을 처리 할 수 있다. ( 잊어버릴까봐 기록물로 남김 )

+ Recent posts