Я пытаюсь извлечь часть контента (строку из 8 символов) с веб-сайта государственной службы и отобразить его на своем собственном веб-сайте. Веб-сайт государственной службы (PS) позволяет повторно использовать контент, поэтому никаких проблем нет.
Строка, которую я пытаюсь извлечь с веб-сайта PS, находится внутри div
. Когда я выбираю эту конкретную часть содержимого в своем веб-браузере и запрашиваю источник выбора DOM, я получаю:
<div class="last-license-plate-truck">8426-STS</div>
Таким образом, извлечь это будет очень легко с помощью сценария jQuery или PHP, нацеленного на div
класс ... но это не работает . Мой скрипт всегда возвращает пустую строку при проверке this частности div
. Однако проверка других div-ов на той же странице возвращает содержимое совершенно нормально, поэтому используемый мной скрипт работает нормально.
Я обнаружил, что если я загружаю сайт PS в своем браузере, а затем запрашиваю исходный код страницы, не выделяя текст, я получаю:
<div class="last-license-plate-truck"></div>
Так что в исходном кодеdiv
пусто, но браузер по-прежнему отображает последний номерной знак, когда я захожу на сайт PS .. Я подозреваю, что информация о последнем номерном знаке динамически вводится в div
с помощью JavaScript или чего-то еще после завершения загрузки страницы.
Есть ли какой-либо способ извлечь содержимое этого конкретного div
? Я полагаю, что это должно быть как-то возможно, поскольку строка символов, которую я ищу, присутствует в DOM?
РЕДАКТИРОВАТЬ - мой код ниже:
<?php
$host = 'example.com';
if($socket =@ fsockopen($host, 80, $errno, $errstr, 5)) {
fclose($socket);
$last_plate = array(
"https://www.example.com/page1"=>"car",
"https://www.example.com/page2"=>"truck",
);
foreach($last_plate as $url => $keyword) {
$page = file_get_contents($url);
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($page);
libxml_use_internal_errors(false);
$divs = $doc->getElementsByTagName('div');
$found = array($keyword => "notfound");
foreach($divs as $div) {
if ($div->getAttribute('class') === 'last-license-plate-'.$keyword) {
$found[$keyword] = "found";
$cleaned = preg_replace ('/[^a-zA-Z0-9-]+/', '', $div->nodeValue);
$cleaned = str_replace(array("\r", "\n", ' '), '', $cleaned);
}
}
if($found[$keyword] != "found") {
echo '<p>The last license plate was not found.</p>'."\n";
}else{
echo '<p>The last license plate is: '.$cleaned.'</p>'."\n";
}
}
}else{
echo '<p>Sorry, please try again later.</p>';
}
?>