2015. 8. 3. 01:01

Phantomjs + ajax 함수 호출

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요.

항상 웹 브라우저 오토메이션 관련되서 작업을 하다가 막히는 부분이 생기는데요.

그중 한 부분이 AJAX 부분 입니다.

AJAX로 호출된 결과값이 JSON or HTML 다양하게 나오는데요.

중요한건 AJAX 호출이 동적이기에 정적으로 저장된 페이지에서는 추릴수가 없더군요.

항상 요부분이 걸렸는데요.

해결했습니다.

https://gist.github.com/markstreich/3667944

소스 링크 입니다.

핵심을 보니, readystatechange 란 이벤트의 리스너를 활용 하는 방법입니다.

생각 보다 phantomjs 란 놈이 잼있는게,

Page.evaluate으로 직접 Javascript 함수를 호출 할 수 있습니다.

즉 페이지안에 있는 함수를 브라우저가 호출(사용자의 클릭과 동일)을 할 수 있는데요.

이부분이 단순히 커맨드로 처리 된다는 부분이 참 매력적입니다.

여튼 이 후 나오는 Ajax 의 response는 다 캡쳐가 됩니다.

이렇게 캡쳐된 결과를 토대로 해서 다시 page의 content의 src의 해당 되는 부분을

Jquery의 element.html(result) 로 처리 한 후.

Element.text() 요런 형태로 추리게 되면 원하는 결과를 얻을수 있습니다.

감사 합니다.