Разбор таблицы, невозможно получить более 3 строк с использованием DOMXpath

По какой-то странной причине, которую я не могу понять прямо сейчас, я не могу получить более 3 строк из таблицы на странице

Это страница.

http://www.reedmfgco.com/en/products/cutters-and-cutter-wheels/cutter-wheels/cutter-wheels-for-tubing-cutters-plastic/

Я хочу разобрать таблицу внизу.

Поскольку на странице только одна таблица, я сделал свой Xpath очень простым .$xpath -> query('//tr')

Если я сделаю следующее

echo $xpath -> query('//tr')->lenght;

Я получаю 3

Почему у меня 3 там 9 строк, я должен получить 9.


Изменить Это код, который я использую

$Dom = new DOMDocument();
@$Dom -> loadHTML($this->html);
$xpath = new DOMXPath($Dom);
echo $xpath -> query('//tr')->lenght;

И обратите внимание, что $ this-> html - это необработанный html из предыдущей ссылки в моем сообщении.


person Nicolas Racine    schedule 19.03.2014    source источник
comment
Как выглядит ваш запрос и как просмотреть результаты? Нам действительно нужно увидеть код.   -  person BOMEz    schedule 20.03.2014
comment
нет кода mutch, который нужно показать, но позвольте мне секунду, я обновлю свой пост Но технически запрос, который вы видите, что я повторяю, является prety mutch, единственный запрос должен работать правильно, а это не так.   -  person Nicolas Racine    schedule 20.03.2014
comment
Я заметил опечатку: длина! = Длина   -  person pguardiario    schedule 20.03.2014


Ответы (1)


Исходный код HTML на этой странице недействителен для XML. Если вы откроете исходный код страницы и будете искать тег <tr>, он также имеет 3 элемента. У продуктов строки таблицы нет открывающего тега <tr>

Для этой проблемы вы можете использовать регулярные выражения для нормализации содержимого таблицы.

$html = file_get_contents('http://www.reedmfgco.com/en/products/cutters-and-cutter-wheels/cutter-wheels/cutter-wheels-for-tubing-cutters-plastic/');

preg_match('`<tbody>(.*)<\/tbody>`', $html, $matches);
if (!empty($matches)) {
    $tableBody = str_replace('</tr><td', '</tr><tr><td', $matches[1]);
}
person pr0head    schedule 19.03.2014
comment
Ага,. Теперь я это вижу ... Есть ли способ, которым я все еще могу разобрать недействительный html? или исправить это до xpath? - person Nicolas Racine; 20.03.2014
comment
Я изменил ответ и добавил пример - person pr0head; 20.03.2014