2016-07-18 2 views
0

내 웹 페이지에서 SVG 객체로 표시되는 서버 상태를 표시하려고합니다. (예 : [http://downdetector.com/status/netflix]).PHP cURL을 사용하여 외부 SVG 객체 가져 오기

그러나 나는 그것을 얻을 수없는 것 같습니다. 잘못된 요청 오류에서부터 빈 객체 또는 빈 div에 이르기까지 무엇이든 가져 왔습니다. 그러나 내가 성공한 것은 cURL을 사용하여 전체 페이지를 반환하는 것이지만 나머지는 필터링하고 단지 SVG 만 인쇄하려고 할 때 더듬 거리는 것입니다.

어떻게하면 외부 서버를 속여 브라우저로 인식하고 SVG 객체를 우아하게 검색하여 페이지에 인쇄 할 수 있습니까? 나는 여전히 PHP에 익숙하지 않으므로 코드 옆의 설명은 매우 환영 할 것이다.

나는 단순 HTML DOM을 사용하려고했지만, 여전히 원하는 결과를 얻을 수 없었다.

이 (여전히있을 수 있습니다로 지저분) 내 현재 코드 :

<?php 
    class StatusController { 

    function __construct() { 
     //include('assets/simple_html_dom.php'); 
    } 

    public function getStatus() { 
     $ch = curl_init(); 
       curl_setopt($ch,CURLOPT_URL,"http://downdetector.com/status/netflix"); 
       curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
       $output=curl_exec($ch); 

       curl_close($ch); 
       //print $output;  
       // $html = str_get_html($output); 
       // $elem = $html->find('div[id=holder]', 0); 
       // print $elem; 
       // 
       $dom = new DOMDocument(); 
       $dom->loadHTML($output); // Returned $data from CURL request 

       $xpath = new DOMXPath($dom); 
       $elements = $xpath->query('*/div'); // Don't know how to fill in this query to find an ID 
       echo('<pre>'.print_r($elements, true).'</pre>'); 
       var_dump($elements); 

      } 

} 
?> 

지금은 거의 3 완전 일 동안 많은 옵션을 시도하고있다 그리고 난 정말에 무엇을 해야할지하지 않습니다 이 점.

+0

정확히 당신이 downdetector에서 얻고 싶은 것을 설명하십시오. 한 장의 사진을 캡처하고 원하는 것을 선택하십시오. 나는 당신을 도울 것입니다 –

+0

당신이 '도둑질'하거나 그들의 데이터를 재사용 할 수 있다고 확신합니까? 데이터 액세스를위한 API 서비스를 제공하고 있기 때문입니다. –

+0

@ QuỳnhNguyễn 회사의 마지막 시간에 대한 보고서를 보여주는 #holder div를 표시하고 싶습니다. :) 미리 감사드립니다. – user1692823

답변

1

이 URL의 문제는 SVG는 자바 스크립트를 통해 동적으로로드되어있다 :

<p>Netflix offers an on-demand streaming video service through the internet as well as a flat rate DVD by mail service. </p> 
      <img id='tracker' style='display: none' /> 
<script type='text/javascript'> 
// <![CDATA[ 
    url = '//tracker.downdetector.com/count/company/20065.txt?ref=' + encodeURIComponent(document.referrer); 
    $('#tracker')[0].src = url; 
// ]]> 
</script> 

script 부분은 SVG로 대체됩니다. 나는 당신에게 말할 수 없다.이 경우에 그것을 얻는 방법.

그러나 일반적인 SVG 요소가 포함 된 웹 사이트가있는 경우 $elements = $xpath->query("//*[name()='svg']");으로 선택할 수 있어야합니다.

+0

스크립트가 동적으로로드되기 때문에이 방법으로 스크립트를 사용할 수없는 것처럼 보입니다. 그러나 간단한 cURL 요청으로 나는 실제로 전체 페이지를 얻습니다! 덜 깨끗한 방법이 있습니까, 아마도 JQuery를 사용하여 제거하고 인쇄 할 수 있습니까? – user1692823

관련 문제