2013-02-22 5 views
5

dom을 변경하지 않고 일부 숫자를 반환하는 일부 JS API가있는 웹 페이지가 있습니다. 이러한 페이지를 다운로드하고 다운로드 한 페이지의 컨텍스트에서 해당 기능을 실행하는 NodeJS 응용 프로그램을 작성하고 싶습니다.cheerio로 스크랩 된 JavaScript 실행

페이지 스크 레이 핑을 위해 cheerio를 보았습니다.하지만 DOM을 탐색하고 조작하는 것이 얼마나 쉬운지를 보면서 페이지 기능 실행에 대한 액세스 권한은 없습니다. 그것을 할 수 있습니까?

대신 jsdom에서 봐야할까요?

감사

+0

[이] (http://stackoverflow.com/a/7978072/2172543) 지금까지 귀하의 질문에 대해 찾은 최고의 SO 대답입니다. 그것은 엄격하게 웹 페이지 자바 스크립트를 실행하는 것에 관한 것이 아니라 HTML 구문 분석에 관한 것입니다. – Marcel

답변

1

힘내라 및 jsdom는 HTML 스크레이퍼하고 자바 스크립트를 실행하는 개념이 없습니다. 액세스하려는 API가 JavaScript로 작성된 경우,이를 추출하여 노드 내부에서 실행하지 못하도록하는 것이 거의 없습니다. 그러나 임의의 JavaScript를 다운로드/실행하면 보안 위험이 커질 수 있습니다. 브라우저의 동작을 시뮬레이트하려면 http://phantomjs.org/을보십시오. 이것은 노드를위한 헤드리스 브라우저이며 일반 브라우저가 할 수있는 모든 것을 할 수 있습니다.

+1

Node에서 JS를 안전하게 실행하려면 나머지 코드와 완전히 분리 된 (하지만 여전히 리소스를 소모 할 수있는) runInContext 메소드가있는'vm' 모듈을 통해 완벽하게 수행 할 수 있습니다. –

+2

jsdom **은 자바 스크립트를 실행하지 않는 HTML 스크레이퍼가 아닙니다. 문서 [초기화 수명주기] (https://github.com/tmpvar/jsdom/blob/master/README.md#initialization-lifecycle) 및 [하드 코어 : jsdom.jsdom] (https : // github. co.kr/tmpvar/jsdom/blob/master/README.md # for-hardcore-jsdomjsdom) – rsp

2

PhantomJS를 사용하고 싶고, 완전히 렌더링 된 출력물을 제공하고, 그 위에 cheerio를 사용하고 싶습니다.