php - php xpath如何从父元素内的多个元素中获取值
问题描述
我需要从特定站点收集所有这些数据。我需要 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 得到一个值。但我也需要所有其他人。我无法完全弄清楚如何做到这一点。任何帮助将不胜感激。
解决方案
如果我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.
那是你要找的吗?
推荐阅读
- angular - 如何处理 Firebase 错误“后端未在 10 秒内响应”
- angular - 尝试将数据注入 mat-dialog 时出错
- couchdb - 更新设计文档时,CouchDB 是否会无条件地重建索引?
- python - 正则表达式:提取 [..] 之间的字符串
- node.js - 当一组用户完成一项任务时,如何执行一项任务?这可以使用 nodejs 和 mongodb 来完成吗?
- python - alembic.util.exc.CommandError:找不到由“f1942fde9843”标识的修订版
- python - 为什么scrapy 说我正在迭代一个“itemMeta”对象?
- r - R中的共现矩阵,对变量的值求和以填充单元格
- regex - ingress rewrite-target 中编号占位符的含义是什么?
- c# - 编写 ASP.NET 自定义存储提供程序