gpt4 book ai didi

symfony - DomCrawler Symfony : how to get content from a node excluding children?

转载 作者:行者123 更新时间:2023-12-04 14:00:16 25 4
gpt4 key购买 nike

假设我有一个这样的 html 页面:

<html>
<head></head>
<body>
Hello World!
<div> my other content </div>
</body>
</html>

如何从 DOM Crawler 获取“Hello World”?

我认为这会奏效:
$crawler = $crawler
->filter('body > div');
->reduce(function (Crawler $node, $i) {
return false;
});

但这显然会报错:
InvalidArgumentException: "The current node list is empty"

最佳答案

不知道这是否可以更容易,但您可以使用 XPath 提取文本节点内容:

$crawler->filterXPath('//body/text()')->text();

结果将是 string包含 Hello World和文本前后的空格,直到第一个标签。因此,如果您只想要文本本身,则可以修剪该值:
$helloWorld = trim($crawler->filterXPath('//body/text()')->text());

但是,如果正文中有多个文本节点,这将适用于您的情况,例如:
<html>
<head></head>
<body>
Hello World!
<div> my other content </div>
Some other text
</body>
</html>

你可能会这样做:
$crawler->filterXPath('//body/text()')->extract(['_text']));

这将返回一个数组:
Array
(
[0] =>
Hello World!

[1] =>
Some other text

)

关于symfony - DomCrawler Symfony : how to get content from a node excluding children?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25484917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com