Создание DOMDocument: сопоставить один определенный элемент в PHP-парсере - PullRequest
1 голос
/ 25 декабря 2010

Добрый вечер, дорогая община,

Ну, во-первых, поздравляю Навидада - я хочу пожелать вам счастливого Рождества !! В мой сезонный перерыв я работаю над небольшим парсером-скриптом.

Сегодня я пытаюсь отладить небольшой объект DOMDocument в php. В идеале было бы неплохо, если Я мог бы получить DOMDocument для вывода в виде массива, чтобы хранить данные в базе данных!

Мой пример: перейдите к URL - см. Пример: цель

Я хочу отфильтровать данные в блоке:

Schulart: BBS
Schulnummer:60119
Anschrift: Berufsbildende Schule Boppard Antoniusstr. 21; 56154 Boppard
Telefon: (0 67 42) 80 61-0
Telefax: (0 67 42) 80 61-29
E-Mail: sekretary@bbs-boppard.de
Internet: website 
Träger:Kreisverwaltung Rhein-Hunsr�ck-Kreis
letzte Änderung: 08 Feb 2010 14:33:12 von 60119

Я изучил исходный код - и обнаружил, что интересующий атрибут должен будь этим: class="content"div class="content"><!-- TYPO3SEARCH_begin --> или даже лучше: wfqbeResults

Так что, если я запускаю DOMDucument, я могу использовать это так:

$dom->getElementById('wfqbeResults');

здесь код: - мои следы

<?php

$dom = new DOMDocument();
@$dom->loadHTMLFile(' -> here the website goes in<- ');
$divElement = $dom->getElementById('wfqbeResults');

$innerHTML= '';
$children = $divElement->childNodes;
foreach ($children as $child) {
   $innerHTML .= $child->ownerDocument->saveXML( $child );
} 
echo $innerHTML;

<?

Дух: это выводит много мусора. В любом случае код выдает много html. Мне пришлось переделайте код немного, чтобы получить 9 строк из парсера:

что нацелено: я хочу получить следующее:

a. 9 строк с девятью метками и девятью значениями. b. Я хочу подготовить вывод для его сохранения в MySQL-DB!

С нетерпением ждем некоторых подсказок привет ноль

1 Ответ

1 голос
/ 25 декабря 2010

Вот решение, которое возвращает метки и значения в отформатированном массиве, готовом для ввода в mysql!

<code><?php

$dom = new DOMDocument();
@$dom->loadHTMLFile('http://schulen.bildung-rp.de/gehezu/startseite/einzelanzeige.html?tx_wfqbe_pi1%5buid%5d=60119');
$divElement = $dom->getElementById('wfqbeResults');

$innerHTML= '';
$children = $divElement->childNodes;
foreach ($children as $child) {
$innerHTML = $child->ownerDocument->saveXML( $child );

$doc = new DOMDocument();
$doc->loadHTML($innerHTML);
//$divElementNew = $dom->getElementsByTagName('td');
$divElementNew = $dom->getElementsByTagname('td');

    /*** the array to return ***/
    $out = array();
    foreach ($divElementNew as $item)
    {
        /*** add node value to the out array ***/
        $out[] = $item->nodeValue;
    }

echo '<pre>';
print_r($out);
echo '
';}?>
...