php通过Xpath获取CSDN的Dom元素

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


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

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

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

<?php
for($j=1 ;$j<=2;$j++){
    $content= file_get_contents('https://blog.csdn.net/SIRENloazhang/article/list/'.$j.'?');
    $document = new DOMDocument();
    $document->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.'<br/>');
            $num++;
        }
    }else{
        echo "读取完毕!!!";
    }
    
}

?>

运行结果:


文章来源: php通过Xpath获取CSDN的Dom元素

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:php通过Xpath获取CSDN的Dom元素