Как использовать dom xpath в сканировании? - PullRequest
0 голосов
/ 14 марта 2019

Я новичок в dom xpath и пытаюсь проиндексировать сайт как упражнение. Раньше я работал с simple_html_dom, поэтому хотел попробовать встроенный dom xpath, чтобы он не зависел от сторонних библиотек.

URL, который я пытаюсь очистить: https://hackdesign.org/lessons

Выдержка из моего кода:

$scriptDocument->loadHTML($html);
libxml_clear_errors(); 
$siteDOM = new DOMXPath($scriptDocument);

$base = $siteDOM->query('//div[@class="flex-auto prose"]');

if($base->length > 0) {
    foreach ($base as $title) {
        $title = $siteDOM->query('//a[@class="red"]');
        $hdtitlu = $title->nodeValue;
        $hdlink = 'https://hackdesign.org'.$title->getAttribute("href");
        echo $hdtitlu . '<br />';
        echo $hdlink . '<br />';        
    }
}

По моему скромному мнению, это должно было сработать. Я начинаю с базового элемента div, из которого хочу получить данные, а затем использую foreach. Я пытаюсь получить заголовок, ссылку и описание из определенных тегов html.

Ошибки, которые я получаю:

Примечание: неопределенное свойство: DOMNodeList :: $ nodeValue в C: \ UwAmp \ www \ test \ index.php в строке 31

Неустранимая ошибка: необработанная ошибка: вызов неопределенного метода DOMNodeList :: getAttribute () в C: \ UwAmp \ www \ test \ index.php в строке 32

Ошибка: вызов неопределенного метода DOMNodeList :: getAttribute () в C: \ UwAmp \ www \ test \ index.php в строке 32

Строка 31: $hdtitlu = $title->nodeValue;

Строка 32: $hdlink = 'https://hackdesign.org'.$title->getAttribute("href");

Можете ли вы указать мне правильное направление?!

Спасибо,

Cristian

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...