Анализира таблица, не може да получи повече от 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
няма много код за показване, но позволете ми за секунда, ще актуализирам публикацията си. Но технически заявката, която виждате, че повтарям, е почти единствената заявка, която трябва да работи правилно, но не е така.   -  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