php xpath如何从父元素内的多个元素中获取值
Posted
技术标签:
【中文标题】php xpath如何从父元素内的多个元素中获取值【英文标题】:php xpath how to get values from multiple elements inside a parent element 【发布时间】:2021-06-19 14:35:22 【问题描述】:我需要从特定站点收集所有这些数据。我需要 URL、图像、文本。这是我尝试使用的代码。但我需要从页面上的所有标签中收集所有信息。
<article>
<a href="http://www.link.com">
<div><img src="https://image.com/image.png" /></div>
<div>History</div>
<div><h3>Content Here.</h3></div>
</article>
<article>
<a href="http://www.link.com">
<div><img src="https://image.com/image.png" /></div>
<div>History</div>
<div><h3>Content Here.</h3></div>
</article>
<article>
<a href="http://www.link.com">
<div><img src="https://image.com/image.png" /></div>
<div>History</div>
<div><h3>Content Here.</h3></div>
</article>
php代码
$html = file_get_contents($feed_url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DomXPath($dom);
$articles = $xpath->query("//article");
$items = array();
foreach($articles as $article)
$link = $xpath->query("//a/@href", $article);
$img = $xpath->query("//img/@src", $article);
$link = $xpath->query("//h3", $article);
我似乎无法让它返回任何值。我可以通过 foreach 得到一个值。但我也需要所有其他人。我无法完全弄清楚如何做到这一点。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果我像这样更改您的 foreach
循环:
foreach($articles as $article)
$link = $xpath->query(".//a/@href", $article);
$img = $xpath->query(".//img/@src", $article);
$head = $xpath->query(".//h3", $article);
echo $link[0]->nodeValue . " ". $img[0]->nodeValue . " ". $head[0]->nodeValue . "\n";
我将其作为输出(我在元素中添加了数字只是为了区分树 <article>
节点:
http://www.link1.com https://image.com/image1.png Content1 Here.
http://www.link2.com https://image.com/image2.png Content2 Here.
http://www.link3.com https://image.com/image3.png Content3 Here.
这就是你要找的吗?
【讨论】:
以上是关于php xpath如何从父元素内的多个元素中获取值的主要内容,如果未能解决你的问题,请参考以下文章