Как проанализировать HTML-страницу, которая является результатом запроса POST (используя curl, JSONPath, Xpath в PHP)?

Мне нужно разобрать эту веб-страницу ….

http://monitorps.sardegnasalute.it/monitorps/MonitorServlet?page=carLavoroPresidi&tipoProntoSoccorso = ТУТТИ&codiceAziendaSanitaria = 200102&idPresidio = 102MAD02&indirizzo = нуль&idProntoSoccorso = 30

… используя PHP для извлечения чисел, которые находятся в таблице в столбцах «ROSSO», «GIALLO», «VERDE» и «BIANCO».

введите описание изображения здесь

(ПРИМЕЧАНИЕ: вы можете увидеть другое значение на этой странице, если попытаетесь просмотреть его … это не имеет значения .., оно динамически меняется ….)

Эти значения являются результатом запроса POST внутри веб-страницы.

Это код PHP, который я использую для отправки запроса POST с помощью curl, а затем анализирую ответ JSON (используя Skyscanner JSON Path .. он отлично работает в моем коде ..), пытаясь извлечь значения с помощью парсинга 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;

?>

Результат на следующем изображении

введите описание изображения здесь

где таблица является результатом команды в моем коде …

print $res[0];

а также

N.D

результат, когда я пытаюсь разобрать, чтобы извлечь одно из моих желаемых значений

Про используемый мной xpath я проверил его с помощью исходного кода страницы ……

Где я делаю не так?

0

Решение

Я решил!

Мой оригинальный код был «вполне» правильным, за исключением ошибки.

Вы должны прокомментировать эту строку …

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

и заменить его этим

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

и все будет работать нормально!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]