如何编辑元素的html?我试过了,但我发现了这个错误。
致命错误:未登录的InvalidArgumentException:禁止在同一爬虫中从多个文档中附加DOM节点。
$crawler = new Crawler('<h1>The title</h1>');
$crawler
->filter('h1,h2,h3,h4,h5,h6')
->each(function (Crawler $crawler, $i) use (&$replace) {
$crawler->html('<span>test</span>' . $crawler->html());
});发布于 2019-11-11 19:16:42
用这个:
$doc = new DOMDocument;
$doc->loadHTML($html);
$crawler = new Crawler($doc);
$crawler
->filter('h1,h2,h3,h4,h5,h6')
->each(function (Crawler $crawler) use ($doc) {
foreach ($crawler as $node) {
$span = $doc->createElement('span', 'test');
$node->parentNode->insertBefore($span, $node);
}
});重要性:使用相同的
DOMDocument对象来创建在Crawler对象中使用的新标记。
正如DomCrawler组件文档中所解释的那样:
Crawler的一个实例表示一组DOMElement对象,这些对象是可以遍历的节点。
因此,您需要在操作Crawler之前遍历DOMElements对象。
https://stackoverflow.com/questions/58806401
复制相似问题