php通过Xpath获取CSDN的Dom元素

Xpath的Dom分析真的比自己写正则去匹配Dom要高效很多,而要使用php的XpathDom,这里我使用的是Wamp,要打开php配置的extensions的openSSL,否则在获取网页的Dom时会报错,然后我们所需的某个元素的Xpath可以通过浏览器,例如谷歌浏览器和火狐浏览器按F12调出网页的element控制台,(这里学过前端的都会的),然后右键自己想要获得的元素,Copy Xpath复制这个元素的Xpath

php通过Xpath获取CSDN的Dom元素_第1张图片

现在我们已经获取了元素的Xpath了,示例我们获取的Xpath为:

//*[@id='mainBox']/main/div[2]/div[2]/h4/a

这里我们是要获取一个列表,所以改为//*[@id='mainBox']/main/div[2]/div/h4/a

strictErrorChecking = false;
    
    /* $tidy     = new tidy;
    $content = $tidy->repairString($content);
    $content = mb_convert_encoding($content, 'UTF-8'); *//*这里就不用Tidy了*/
    
    @$document->loadhtml($content); /*@是一定要给的*/
    $xpath = new DOMXPAth($document);
    $num = 0;
    $elements= $xpath->query("//*[@id='mainBox']/main/div[2]/div/h4/a");
    if($elements->length!=0){
        for ($i = 0; $i < $elements->length; $i++) {
            $element = $elements->item($i);
            $url = $element->getAttribute('href');
            print_r($url.'
'); $num++; } }else{ echo "读取完毕!!!"; } } ?>

运行结果:

php通过Xpath获取CSDN的Dom元素_第2张图片


你可能感兴趣的:(php通过Xpath获取CSDN的Dom元素)