DomCrawler Symfony:如何从不包括子节点的节点获取内容?
假设我有这样一个html页面:DomCrawler Symfony:如何从不包括子节点的节点获取内容?,symfony,web-crawler,Symfony,Web Crawler,假设我有这样一个html页面: <html> <head></head> <body> Hello World! <div> my other content </div> </body> </html> 但这显然会产生一个错误: InvalidArgumentException: "The current node list is empty" 不知道这是否更容易,但您可以使用X
<html>
<head></head>
<body>
Hello World!
<div> my other content </div>
</body>
</html>
但这显然会产生一个错误:
InvalidArgumentException: "The current node list is empty"
不知道这是否更容易,但您可以使用XPath提取文本节点内容:
$crawler->filterXPath('//body/text()')->text();
结果将是一个字符串
,包含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>
这将返回一个数组:
Array
(
[0] =>
Hello World!
[1] =>
Some other text
)
$crawler->filterXPath('//body/text()')->extract(['_text']));
Array
(
[0] =>
Hello World!
[1] =>
Some other text
)