2013-11-25 3 views
1

웹 사이트 (모든 링크)에있는 모든 웹 페이지의 목록을 가져와야합니다. Phantomjs를 사용해야하지만, 전에는 사용하지 못했습니다. 아무도 나를 설명 할 수 있나요, 어떻게 사용할 수 있습니까? Phantomjs의 도움으로 HTML 코드를 분석하여 모든 링크를 얻는 방법은 무엇입니까?Phantomjs로 URI를 얻는 방법

답변

1

PhantomJS는 자바 스크립트 API가 포함 된 헤드리스 WebKit 스크립트입니다. 단일 실행 파일로 재배포됩니다. 공식 웹 사이트에서

은 Windows, Mac OU 리눅스에 대한 공식 릴리스가 있습니다하지만 당신이 원한다면 당신은 또한 당신의 자신의 버전을 구축 할 수 있습니다.

PhantomJS 그 자체로 아무것도하지 않는 스크립트를 작성, 그냥 실행합니다. 당신은 당신의 행동을 코드화/스크립트해야합니다. 그것은 자바 스크립트 또는 커피 스크립트에 의해 이루어집니다.

  • 스크립트를 실행 명령 프롬프트에서

, 당신은 당신이 phantomjs에 대한 래퍼를 만들 수 있고, 때로는

> phantomjs yourscript.js 

를 작성해야합니다. 특히 WPF에서는 Process/ProcessStartInfo 클래스를 사용하여 스크립트 실행을 관리하십시오.

  • 스크립트를 작성하는 방법은 무엇입니까?

자바와 특히 Node.js 개발에 익숙하다면 학습 곡선이 작습니다. quick start은 소중할 수 있으며 available examples으로 자신을 연습하는 것을 망설이지 않아도됩니다. 그게 가장 어려운 부분이지만, 몇 스크립트가 끝나면 더 쉬울 것입니다.

>phantomjs.exe so20189669.js http://stackoverflow.com/questions/20189669/how-to-get-uri-with-phantomjs 

가 마법 대답이없고 당신이 그것을 필요에 따라 변경해야합니다 :

은 초기의 질문에 대답하기 위해, 여기에 가능한 스크립트 명령 프롬프트에서

var page = require('webpage').create(); 
var system = require('system'); 

if (system.args.length != 2) { 
    console.log('Usage: so20189669.js <URL> '); 
    phantom.exit(1); 
} else { 
    var url = system.args[1]; 
    page.open(url, function (status) { 
     if (status !== 'success') { 
      console.log('Unable to load the address!'); 
      phantom.exit(); 
     } else { 
      var links = page.evaluate(function() { 
       return [].map.call(document.querySelectorAll('a'), function (link) { return link.getAttribute('href') }); 
      }); 

      console.log(JSON.stringify(links)); 
      phantom.exit(); 
     } 
    }); 
} 

입니다 !

관련 문제