我正在使用 Symfony Crawler 组件来解析 html,如下所示:
<div> //first level div
<div>1</div> //sub div
<div>2</div>
<div>
<div></div> // more levels and empty divs possible
</div>
</div>
<div>
<div>3</div>
<div>4</div>
</div>
值 1 2 3 4 可能会有所不同,甚至不存在于空 div 中,但 div 也可能包含 subDivs 等。我陷入了选择第一级 div 来处理它们的阶段。Xpath 请求返回我一级 div 和细分
$crawler = new Crawler($html);
foreach ($crawler->filterXPath('//div') as $domElement) {
var_dump($domElement->textContent);
}
返回
string(2) "12"
string(1) "1"
string(1) "2"
string(2) "34"
string(1) "3"
string(1) "4"
Xpath 请求应该如何防止处理子元素?
UPD:
实际麻烦的DOM方案
<div> //first level div
<div>1</div> //sub div
<div>2</div>
</div>
<div>
<div>3</div>
<div>4
<div>5</div>
<a>6</a>
</div>
</div>
此 DOM 树应由一级 div 处理,并根据<a>
标签的存在进行一些逻辑。