2017-12-28 26 views
0

私はこのWebページを解析する必要が....POST要求の結果であるHTMLページを解析するには(PHPではcurl、JSONPath、Xpathを使用します)?

http://monitorps.sardegnasalute.it/monitorps/MonitorServlet?page=carLavoroPresidi&tipoProntoSoccorso=TUTTI&codiceAziendaSanitaria=200102&idPresidio=102MAD02&indirizzo=null&idProntoSoccorso=30

...ルの列の下の表にある数字「ROSSO」を抽出するためにPHPを使用して、GIALLO」、 『VERDE』と「BIANCO」

enter image description here

(注:あなたがそれを閲覧しようとした場合、あなたが...それは問題ではない...そのページに別の値を見ることができ,,それはdinamically変更.... )

これらの値は、Webページ内のPOSTリクエスト結果です。

これは、curlを使用してPOSTリクエストを送信し、JSON応答を解析する(Skyscanner JSON Pathを使用して、コード内で正常に動作しています)という値を抽出しようとしているPHPコードです。 XPath解析を使用します。

<?php 
    include "./tmp/vendor/autoload.php"; 

    $ch = curl_init(); 

    curl_setopt_array($ch, array(
     CURLOPT_URL => "http://monitorps.sardegnasalute.it/monitorps/MonitorServlet", 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_ENCODING => "", 
     CURLOPT_MAXREDIRS => 10, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
     CURLOPT_CUSTOMREQUEST => "POST", 
     CURLOPT_POSTFIELDS => "idMacroArea=null&codiceAziendaSanitaria=200102&idAreaVasta=null&idPresidio=102MAD02&idProntoSoccorso=30&tipoProntoSoccorso=TUTTI&vicini=null&xhr=true", 
     CURLOPT_HTTPHEADER => array(
     "cache-control: no-cache", 
     "content-type: application/x-www-form-urlencoded" 
    ), 
    )); 

    $server_output = curl_exec ($ch); 

    curl_close ($ch); 

    $jsonObject = new JsonPath\JsonObject($server_output); 

    $jsonPathExpr = '$..view'; 

    $res = $jsonObject->get($jsonPathExpr); 
    print $res[0]; 

    $dom = new DOMDocument(); 
    @$dom->loadHTML(json_encode($res[0])); 

    $xpath = new DOMXPath($dom); 

    $xpath_for_parsing = '/html/body/div[1]/div/div/div/table/tbody/tr[2]/td[4]'; 

    $colorWaitingNumber = $xpath->query($xpath_for_parsing); 
    $theValue = 'N.D.'; 
    foreach($colorWaitingNumber as $node) 
    { 
     $theValue = $node->nodeValue; 
    } 

    print $theValue; 

    ?> 

結果は...以下の画像の表は、私のコードでコマンドの結果である

enter image description here

print $res[0]; 

ですND

私は、私はそれがページのソースコードを確認するチェックしました使用していたXPathについての私の目標値

の1を抽出するために解析しようとすると......

結果であり、

どこが間違っていますか?

答えて

0

私は解決しました!

私のオリジナルコードは間違いを除いて「かなり」正しいものでした。

あなたは、この行をコメントにしました...

//@$dom->loadHTML(json_encode($res[0])); 

この1

@$dom->loadHTML($res[0]); 

でそれを代用し、すべてが正常に動作します!

関連する問題