2013-01-31 2 views
6

PHP에서 cURL로 페이지를 가져옵니다. 모든 것이 정상적으로 작동하지만 페이지가로드 된 후 자바 스크립트로 계산되는 페이지의 일부분을 가져 오는 중입니다. cURL은 JavaScript 계산이 완료되기 전에 이미 페이지 원본을 다시 PHP 스크립트로 보내므로 잘못된 최종 결과가 발생합니다. 사이트에서의 계산은 AJAX에 의해 수행되므로 쉽게 계산할 수는 없습니다. 또한 대상 페이지의 코드에 액세스 할 수 없기 때문에 내 (cURL) 가져 오기 요구에 맞게 대상 페이지를 조정할 수 없습니다.페이지의 동적 업데이트가 완료 될 때까지 cURL을 대기시키는 방법이 있습니까?

모든 동적 트래픽이 완료 될 때까지 대기하도록 cURL에 알릴 수있는 방법이 있습니까? 오래 걸릴 수있는 데이터를 다른 도메인으로 계속 보내고있는 일부 자바 스크립트 때문에 까다로울 수 있습니다. 적어도 내가 올바른 결과를 얻었다면 적어도 테스트 할 수 있습니다.

Safari의 내 개발자 툴바는 페이지가 약 1.57 초 내에 완료되었음을 나타냅니다. 어쩌면 2 초 동안 정적으로 cURL을 기다릴 수 있습니까?

나는 가능성은 :

답변

4

컬은 어떤 자바 스크립트를 실행하거나 문서에 언급 된 모든 파일을 다운로드하지 않습니다 무엇인지 궁금합니다. 따라서 cURL은 문제의 해결책이 아닙니다.

서버 측에서 브라우저를 사용해야 만 페이지를로드하고 X 초 동안 기다린 다음 HTML을 제공하도록 요청해야합니다.

찾아보기 : http://phantomjs.org/ (node.js를 사용해야하며 PHP 솔루션을 전혀 알지 못합니다).

+0

운 좋게도 그것은 단지 작은 코드 일뿐입니다. JavaScript로 코드를 다시 작성하고 jQuery와 PhantomJS로 데이터를 가져옵니다. 고맙습니다 :) –

+0

내 jQuery를 사용하는 로컬 HTML 페이지에 PhantomJS를 간단하게 포함시킬 수있는 방법이 있습니까? –

+0

아니요. phantom.js는 클라이언트에서 수행 할 수없는 실제 웹킷 브라우저를 내부적으로 사용합니다. –

2

검색하는 페이지 또는 포함 할 계산에 대해 많이 알지 못하지만 이러한 ajax 요청을 처리하는 URL로 바로 연결하는 옵션이 될 수 있습니다. Firebug와 같은 것을 사용하여 대상 페이지에서 Ajax 호출을 검사하고 전달 된 URL 및 매개 변수를 파악할 수 있습니다. 전체 웹 페이지가 필요하다면 웹 페이지와 Ajax URL을 모두 cURL로 만들고 PHP 코드에서이 둘을 결합 할 수 있습니다. 그러나 어색해지기 시작합니다.

+0

이것은 다른 프로그램을 사용하는 대신 이동하는 방법입니다. –