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가지 정보만 잘 조합해봐도 많은 것을 처리 할 수 있다. ( 잊어버릴까봐 기록물로 남김 )
'etc > old' 카테고리의 다른 글
포토샵 이미지 - 금연, 광고부착 금지 (0) | 2017.10.27 |
---|---|
라즈베리에서 사용할 UI 툴 선택기 ~~ (0) | 2017.10.27 |
[썸타는박스] 2017년 7월 (0) | 2017.07.27 |
갤럭시 S8 활용 팁 모음 !! - 정리중 - (0) | 2017.05.17 |
기술 부채에 대해 Technical Debt (0) | 2017.05.11 |