
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 "读取完毕!!!"; } } ?>
运行结果:
人吐槽 | 人点赞 |
发表评论