PHP - DOMXpath не возвращает никаких узлов, когда должен - PullRequest
0 голосов
/ 05 мая 2020

Я извлекаю HTML из Selenium, а затем извлекаю данные из HTML с помощью Xpaths.

Это Xpath:

/html/body/div[2]/div[1]/div/div/div/div/ul/li/div[1]/h3/a

Это мой код:

$data = $webdriver->getPageSource();
d($data, $urltemplate);
$doc = new DOMDocument();
                    $doc->loadHTML($data);
$xp = "/html/body/div[2]/div[1]/div/div/div/div/ul/li/div[1]/h3/a";
            $xpatho = new DOMXpath($doc);
 $elementsn =  $xpatho->query($xp);
d(get_class($elementsn),$elementsn->count(),$xp,$name);
// d() is a custom function like var_dump().

Я всегда получаю $ elementsn-> count () = 0.

Это $ data:

https://pastebin.com/ahuvkJfN

Я пытаюсь извлечь такие строки, как «NAD M10 BLUOS ...», «NAD M12 DIRECT DIGITAL ...» и так далее ...

Я сохранил HTML в файл , и открыл его в моем браузере. Я прилагаю снимок экрана с данными, которые я хотел получить (выделены синим): enter image description here

По сути, страница HTML представляет собой список продуктов, и я ищу извлеките все названия продуктов. Для подтверждения я использовал Chrome инструменты разработчика и функцию копирования полного Xpath. У меня есть следующие Xpaths для некоторых названий продуктов:

/html/body/div[2]/div[1]/div/div/div/div/ul/li[1]/div[1]/h3/a
/html/body/div[2]/div[1]/div/div/div/div/ul/li[3]/div[1]/h3/a

Я предполагаю, что это будет обобщать на:

/html/body/div[2]/div[1]/div/div/div/div/ul/li/div[1]/h3/a

Однако я продолжаю получать DOMNodeList с count = 0. Почему это так и как я могу проверить, в чем заключается ошибка?

PS: Это исходная веб-страница: http://lenbrook.com.sg/3-shop-by-brand# / page-4 / price-49-8667

1 Ответ

0 голосов
/ 05 мая 2020

Попробуйте сменить $xp

$xp = '//a[@class="product_link"]/text()'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...