Php 如何使用Symfony DomCrawler组件和用于Laravel 4的Gout从爬虫对象中跳过或删除html标记列表?

Php 如何使用Symfony DomCrawler组件和用于Laravel 4的Gout从爬虫对象中跳过或删除html标记列表?,php,symfony,laravel-4,goutte,Php,Symfony,Laravel 4,Goutte,这是我第一次尝试,但没有成功 $this->crawler = $client->request('GET', $this->url); $document = new \DOMDocument('1.0', 'UTF-8'); $root = $document->appendChild($document->createElement('_root')); $this->crawler->rewind(); $root->appendChild

这是我第一次尝试,但没有成功

$this->crawler = $client->request('GET', $this->url);
$document = new \DOMDocument('1.0', 'UTF-8');
$root = $document->appendChild($document->createElement('_root'));
$this->crawler->rewind();
$root->appendChild($document->importNode($this->crawler->current(), true));

$selectorsToRemove = ['script','p'];
foreach ($selectorsToRemove as $selector) {
   $crawlerInverse = $this->crawler->filter($selector);
   foreach ($crawlerInverse as $elementToRemove) {
      $parent = $elementToRemove->parentNode;
      $parent->removeChild($elementToRemove);
    }
}
$this->crawler->clear();
$this->crawler->add($document);
我想从这个页面获取“p”标记,它在段落中有一些js,所以当我尝试执行$node->text()时;它在“p”中的“script”中获取文本和js。结构是这样的,

<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
<script>
 "JS CODE"
</script>
</p>

知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度上,我们需要一个实验室来进行日常工作。
“JS代码”


所以我只想要Lorem ipsum文本。

我查看了DomCrawler,但没有看到它有什么用途。它似乎只是围绕着已经很容易使用的东西,所以我要走一条捷径,直接使用它

这个例子很简短,你应该能够或多或少地适应它。你准备好了一份文件


例子:
$html=parentNode->removeChild($node);
}
echo$dom->saveXML();

输出:


Lorem ipsum dolor sit amet,是一位杰出的建筑设计师,也是一位临时建筑设计师
这是一个巨大的挑战。我们在维尼亚姆岛上吃了一顿饭
nostrud实习ullamco laboris nisi ut aliquip ex ea commodo consequat。


DOMClawler用于爬行,而不是编辑。使用普通文档进行编辑。
$html = <<<'HTML'
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut    labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
<script>
 "JS CODE"
</script>
</p>
HTML;

$dom = new DOMDocument();
$dom->loadXML($html);
$xpath = new DOMXPath($dom);

foreach ($xpath->query('//p/script') as $node) {
    $node->parentNode->removeChild($node);
}

echo $dom->saveXML();
<?xml version="1.0"?>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut    labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

</p>