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 "读取完毕!!!";
    }
    
}

?>

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值