如何编辑元素的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());
});
Run Code Online (Sandbox Code Playgroud)
用这个:
$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);
}
});
Run Code Online (Sandbox Code Playgroud)
重要提示:使用相同的
DOMDocument
对象来创建对象中使用的新标签Crawler
。
如DomCrawler 组件文档中所述:
Crawler 的一个实例表示一组 DOMElement 对象,这些对象是可以遍历的节点...
因此,您需要Crawler
在操作之前遍历对象DOMElements
。
归档时间: |
|
查看次数: |
1231 次 |
最近记录: |