如何使用Simple HTML DOM模仿子选择器?

arm*_*rma 2 php simple-html-dom

伙计们!

我有一个讨厌的页面要解析,但无法弄清楚如何使用简单的HTML DOM从中提取正确的数据块,因为它没有CSS子选择器支持.

HTML:

<ul class="ul-block">
   <li>xxx</li>
   <li>xxx</li>
   <li>
      <ul>
         <li>xxx2</li>
      </ul>
</ul>
Run Code Online (Sandbox Code Playgroud)

如何提取(直接)li父元素ul.ul-block

$node->find('ul[class=ul-block] > li');不起作用,$node->find('ul[class=ul-block] li');ofc也发现了嵌套的descandant li元素:(

小智 6

我有同样的问题,并使用children方法只抓住第一级项目.

<ul class="my-list">
    <li>
        <a href="#">Some Text</a>
        <ul>
            <li><a href="#">Some Inner Text</a></li>
            <li><a href="#">Some Inner Text</a></li>
            <li><a href="#">Some Inner Text</a></li>
            <li><a href="#">Some Inner Text</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Some Text</a>
        <ul>
            <li><a href="#">Some Inner Text</a></li>
            <li><a href="#">Some Inner Text</a></li>
            <li><a href="#">Some Inner Text</a></li>
            <li><a href="#">Some Inner Text</a></li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这里是Simple HTML Dom代码,只获取第一级li项:

$html = file_get_html( $url );
$first_level_items = $html->find( '.my-list', 0)->children();

foreach ( $first_level_items as $item ) {
    ... do stuff ...
}
Run Code Online (Sandbox Code Playgroud)