Я здание основного экрана скребок для личного использования и обучения целей, поэтому, пожалуйста, не пишите комментарии, как «Вы должны спросить разрешение» и т.д.Доступ к ребенку дивы с помощью DOMDocument и XPath
данных Я пытается получить доступ структурирована следующим образом:
<tr>
<td>
<div class="wrapper">
<div class="randomDiv">
<div class="divContent">
<div class="event">asd</div>
<div class="date">asd</div>
<div class="venue">asd</div>
<div class="state">asd</div>
</div>
</div>
</div>
</td>
</tr>
Я пытаюсь собрать все эти данные (как есть около 20 строк на данной странице).
Используя следующий код я сумел собрать данные мне нужно:
$remote = file_get_contents("linktoURL");
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$file = @$doc->loadHTML($remote);
$rows = $doc->getElementsByTagName('tr');
$xp = new DOMXpath($doc);
//initialize variables
$rows = array();
foreach($xp->query('//*[contains(@class, \'wrapper\')]', $doc) as $found) {
echo "<pre>";
print_r($found->nodeValue);
}
Теперь мой вопрос, как бы я идти о хранении все эти данные в виде ассоциативного массива, как показано ниже:
Array (
[0] => Array
(
[Event] => Name
[Date] => 12/12/12
[Venue] => NameOfPlace
[state] => state
)
[1] => Array
(
[Event] => Name
[Date] => 12/12/12
[Venue] => NameOfPlace
[state] => state
)
[2] => Array
(
[Event] => Name
[Date] => 12/12/12
[Venue] => NameOfPlace
[state] => state
)
)
Прямо сейчас единственным решением, которое приходит на ум, является вызов запроса xpath для каждого имени класса //*[contains(@class, \'className\')]
в цикле foreach.
Есть ли более идиоматический путь через DOMDocument и XPath, где я могу создать ассоциативный массив вышеуказанных данных?
редактировать:
Я не ограничивается использованием DOMDocument и XPath, если есть и другие решения, которые могли бы быть проще, то оставьте их.
Существует библиотека, которая позволяет выбирать узлы с селекторов стилей CSS. Сейчас я не помню его имени. – alex