php-使用DOMDocument的Web刮板
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-使用DOMDocument的Web刮板,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1462字,纯文字阅读大概需要3分钟。
内容图文
![php-使用DOMDocument的Web刮板](/upload/InfoBanner/zyjiaocheng/662/541f8d186d994985824fa9c60c4c445d.jpg)
我试图使用file_get_contents抓取HTML,然后使用DOMDocument对象来抓取网页内容.我的问题是我无法获得适当的信息.我不确定这是因为我使用DOMDocument的方法错误,还是源中的(X)HTML不好.
在源代码中,有一个ID为’cards’的元素,其中有两个子div.我想要第一个孩子,该孩子有很多孩子div,而孩子又有一个固定孩子和div孩子.我想要来自锚点的href和来自其子div的nodeValue.
结构是这样的:
<div id="cards">
<div class="grid">
<div class="card-wrap">
<a href="linkValue">
<img src="..."/>
<div>nameValue</div>
</a>
</div>
...
</div>
<div id="...">
</div>
</div>
我从$cards = $dom-> getElementById(“ cards”)开始.我得到一个DOMText对象,一个DOMElement对象,一个DOMText对象,一个DOMElement对象和一个DOMText对象.然后,我使用$grid = $cards-> childNodes-> item(1)获取第一个DOMElement对象,该对象大概是.grid元素.但是,当我使用以下命令遍历$grid时:
foreach($grid->childNodes as $item){
if($item->nodeName == "div"){
echo $item->nodeName,' | ',$item->nodeValue,'<br>';
}
}
我最终看到一个充满“ div | nameValue”的页面,其中nameValue是嵌入式div的nodeValue,但是我无法找到锚来获取其href值.
我的DOMDocument是否明显做错了,还是这里还有其他事情?
解决方法:
好吧,从您的示例代码if($item-> nodeName ==“ div”){很可能会排除任何< a>标签.另外,我不认为childNodes允许递归迭代.
因此,要访问有问题的节点,可以使用:
$children = $dom->getElementById("cards")->childNodes
->item(1)->childNodes->item(1)->childNodes;
但是,正如您所看到的,这非常混乱……XPath简介:
> http://php.net/manual/en/class.domxpath.php
> http://www.w3schools.com/xpath/xpath_syntax.asp
内容总结
以上是互联网集市为您收集整理的php-使用DOMDocument的Web刮板全部内容,希望文章能够帮你解决php-使用DOMDocument的Web刮板所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。