Я не могу добраться до тега td таблицы - PullRequest
0 голосов
/ 08 октября 2018

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

https://www.mecsumai.com/bkn-summary/?bid=16076001&bg1=026937&bg2=dce8e2&wdt=100%25&aln=center&newid=06076001

Мои коды foreach зайцы:

$allTables = $DOMParser->getElementsByTagName('table');
        foreach ($allTables as $table) {
            foreach ($table->getElementsByTagName('tr') as $tr) {
                $tds = $tr->getElementsByTagName('td');
                if ($tds->length == 2) {
                    $property = trim($tds->item(0)->nodeValue);
                    $value = trim($tds->item(1)->nodeValue);

                    switch ($property) {
                        case '販売価額':
                            $changeForMyDB['price'] = $value;
                            break;
                        case '所在地':
                            $changeForMyDB['address'] = $value;
                            break;
                        case '総戸数':
                            $changeForMyDB['hows_old'] = $value;
                            break;
                        case '間取り':
                            $changeForMyDB['rooms'] = $value;
                            break;
                        case '建物竣工':
                            $changeForMyDB['old'] = $value;
                            break;
                        case '入居(予定)日':
                            $changeForMyDB['entery'] = $value;
                            break;
                        case 'バルコニー面積':
                            $changeForMyDB['balcon_m2'] = $value;
                            break;
                        case '管理会社':
                            $changeForMyDB['company_name'] = $value;
                            break;
                        case '物件名':
                            $changeForMyDB['name'] = $value;
                            break;
                        case '専有面積':
                            $changeForMyDB['extend'] = $value;
                            break;

                        default:
                            # code...
                            break;
                    }
                }
            }
        }

        Estates::insertGetId($changeForMyDB);
        $this->line('DATA saved.');
    }
}
}

Я обновил коды и не получаю ошибок, но все еще не могу получить данные.Что я здесь не так делаю?
Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 08 октября 2018

Вы не можете получить доступ к DOMNodeList напрямую как массив, но у вас есть эквивалентный метод доступа к Nodes.Я также добавил несколько ленивых проверок, чтобы убедиться, что tr имеет как минимум два элемента, соответствующих свойству и значению:

$dom = DOMDocument::loadHTMLFile("https://www.mecsumai.com/bkn-summary/?bid=16076001&bg1=026937&bg2=dce8e2&wdt=100%25&aln=center&newid=06076001");

$allTables = $dom->getElementsByTagName('table');
foreach ($allTables as $table){
    foreach ($table->getElementsByTagName('tr') as $tr){
        $tds = $tr->getElementsByTagName('td');
        if ($tds->length == 2) {
            $property = trim($tds->item(0)->nodeValue);
            $value = trim($tds->item(1)->nodeValue);
            $d[$property] = $value;
        }
    }
    if (isset($d)) {
        echo "Keys: " .  count($d) . "\n";
        unset ($d);
    }
}

Вывод:

Keys: 31
Keys: 27
Keys: 30
...