如何在爬网中使用dom xpath?

时间:2019-03-13 23:15:15

标签: php dom xpath

我是dom xpath的新手,我正在尝试将网站编入索引作为练习。我以前使用过simple_html_dom,所以我想尝试在dom xpath中构建而不依赖于第三方库。

我要抓取的网址是: 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标签获取标题,链接和描述。

我得到的错误:

  

注意:未定义的属性:第31行的C:\ UwAmp \ www \ test \ index.php中的DOMNodeList :: $ nodeValue

     

致命错误:未捕获错误:在第32行的C:\ UwAmp \ www \ test \ index.php中调用未定义的方法DOMNodeList :: getAttribute()      

错误:在第32行的C:\ UwAmp \ www \ test \ index.php中调用未定义的方法DOMNodeList :: getAttribute()

第31行是:$hdtitlu = $title->nodeValue;

第32行是:$hdlink = 'https://hackdesign.org'.$title->getAttribute("href");

您能指出我正确的方向吗?!

谢谢

克里斯蒂安

0 个答案:

没有答案