2016-07-18 8 views
0

SVGオブジェクトとして表示されている自分のWebページにサーバーステータスを表示しようとしています。 (例えば、[http://downdetector.com/status/netflix)。PHP cURLを使用して外部SVGオブジェクトを取得する

しかし、私はそれを得るように見えることはできません。私は、間違った要求エラーから空のオブジェクトや空のdivへの何かを得ました。しかし、私が成功したのは、cURLを使ってページ全体を返すことですが、残りの部分をフィルタリングして、SVGのみを印刷しようとすると、ぼやけてしまいました。

私は外部サーバーを騙して私がブラウザだと思うようにして、正常に、好ましくはエレガントにSVGオブジェクトを取り出してページに印刷できますか?私はPHPでまだまだ新しいので、コードの隣にある説明は大歓迎です。

私はさらに、単純なHTML DOMを使用しようとしましたが、私はまだ望ましい結果を得ることができませんでした。

これは私の現在のコード(汚い、それはまだかもしれなど)である:私は今、ほぼ3日間フルのために多くのオプションをしようとしてきたと私は本当にで何をするか分からない

<?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); 

      } 

} 
?> 

この点。

+0

ダウンデートから得たいものを正確に説明してください。 1つの画像をキャプチャし、取得するものを選択します。私はあなたを助けるでしょう –

+0

本当にあなたは自分のデータを「盗む」ことができるのですか?彼らは彼らのデータにアクセスするためのAPIサービスを提供しているからです。 –

+0

@QuỳnhNguyễn私は、会社の最後の時間のレポートを示す#holder divを表示したいと思っています。:)ありがとうございます! – user1692823

答えて

1

このURLでの問題は、SVGはJavaScriptで動的にロードされていることを、次のとおりです。

<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要素が埋め込まれたWebサイトをお持ちの場合は、$elements = $xpath->query("//*[name()='svg']");で選択する必要があります。

+0

スクリプトは動的にロードされるため、この方法でスクリプトを使用することは不可能です。しかし、単純なcURL要求で私は実際にページ全体を取得します! JQueryを使用してストリップして印刷すると、あまりクリーンな方法はありませんか? – user1692823

関連する問題