2013-08-10 5 views
20

내가 서버 측에서 다음과 같은 작업을 수행 할 클릭 버튼으로 이동합니다 웹 페이지
2) 해당 페이지에서 클릭을 시뮬레이션 한 다음 새 페이지로 이동을 긁어긁어 웹 페이지와

1).
3) JSON 또는 뭔가 내가 Node.js를 함께 사용하여 생각하고

를 통해 다시 클라이언트에 데이터를 송신 새 페이지
4) 새 페이지
5에 대한 몇 가지 버튼 클릭을 시뮬레이션)을 쳤어요 . 이는 모듈 난
가 a) 좀비
b) Node.io
c)
d) JSDOM
E) 다른 건

I 설치된 노드 Phantomjs 사용해야로서

그러나 혼란 오전 , io하지만 명령 프롬프트를 통해 실행할 수 없습니다.

PS : 나는 2008 서버는 다음과 같이 나열

답변

30

Zombie.js와 Node.io는 JSDOM에서 실행되므로 JSDOM (또는 이와 동등한 래퍼), 헤드리스 브라우저 (PhantomJS, SlimerJS) 또는 Cheerio로 옵션을 사용할 수 있습니다.

  • JSDOM은 Node.js에서 DOM과 CSSOM을 다시 만들어야하기 때문에 상당히 느립니다.
  • PhantomJS/SlimerJS는 적절한 헤드리스 브라우저이므로 성능이 좋으며 신뢰할 수 있습니다.
  • Cheerio은 JSDOM의 간단한 대안입니다. Node.js에서 전체 페이지를 다시 만들지는 않습니다 (단지 DOM을 다운로드하고 파싱하므로 javascript는 실행되지 않습니다). 따라서 버튼/링크를 실제로 클릭 할 수는 없지만 웹 페이지를 긁는 속도는 매우 빠릅니다.

귀하의 요구 사항을 감안할 때, 나는 아마도 무표정한 브라우저와 같은 것으로 갈 것입니다. 특히 CasperJS을 선택 하겠지만 멋지고 표현력이 뛰어난 API를 사용하기 때문에 빠르고 안정적입니다 (JSDOM처럼 DOM 또는 CSS를 구문 분석하고 렌더링하는 방법을 재발견 할 필요가 없습니다). 매우 쉽습니다. 단추 및 링크와 같은 요소와 상호 작용합니다. CasperJS에서

귀하의 워크 플로우는 다음과 같이 더 많거나 적은 찾아야한다 :

casper.start(); 

casper 
    .then(function(){ 
    console.log("Start:"); 
    }) 
    .thenOpen("https://www.domain.com/page1") 
    .then(function(){ 
    // scrape something 
    this.echo(this.getHTML('h1#foobar')); 
    }) 
    .thenClick("#button1") 
    .then(function(){ 
    // scrape something else 
    this.echo(this.getHTML('h2#foobar')); 
    }) 
    .thenClick("#button2") 
    thenOpen("http://myserver.com", { 
    method: "post", 
    data: { 
     my: 'data', 
    } 
    }, function() { 
     this.echo("data sent back to the server") 
    }); 

casper.run(); 
+0

또한 어떤 내 경험의 좀비 좀비 ' – user2129794

+0

사용에보기는 것은 PhantomJS 또는 CasperJS만큼 신뢰할 수 없습니다.때로는 흐름이 매우 이상한 글리치로 인해 중단되고 버튼, 클릭, 링크 등을 사용하여 페이지를 탐색 할 때를 이해할 수없는 것처럼 보일 수 있습니다. 그러나 노드가 외부 프로세스가 아닌 스크래핑을 실행하도록하는 것이 좋습니다. 나는 그것이 당신의 어플리케이션에 정말로 달려 있다고 생각합니다. 외부 서비스가 스크래핑을하고 있다는 사실을 해결할 수 있다면 헤드리스 브라우저로 이동하십시오. – danielepolencic

2

모듈 창하고 있어요 :

  • Phantomjs/좀비 - 브라우저를 시뮬레이션 (헤드리스 - 아무것도 실제로 표시되지 않습니다). 정적 또는 동적 스크래핑에 사용할 수 있습니다. 또는 html 페이지를 테스트하십시오.
  • Node.io/jsdom - webscraping : 페이지에서 데이터 추출 (정적).

요구 사항을 보면 유령이나 좀비를 사용할 수 있습니다.

관련 문제