[英]How to imitate child selector with Simple HTML DOM?
伙計們!
我有一個討厭的頁面要解析,但無法弄清楚如何使用簡單的HTML DOM從中提取正確的數據塊,因為它沒有CSS子選擇器支持。
HTML:
<ul class="ul-block">
<li>xxx</li>
<li>xxx</li>
<li>
<ul>
<li>xxx2</li>
</ul>
</ul>
我如何提取(直接)父ul.ul-block
子li
元素?
$node->find('ul[class=ul-block] > li');
不起作用和$node->find('ul[class=ul-block] li');
ofc還發現了嵌套的descandant li
元素:(
我有同樣的問題,並使用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>
這里是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 ...
}
php DOM的簡單示例:
$dom = new DomDocument;
$dom->loadHtml('
<ul class="ul-block">
<li>a</li>
<li>b</li>
<li>
<ul>
<li>c</li>
</ul>
</li>
</ul>
');
$xpath = new DomXpath($dom);
foreach ($xpath->query('//ul[@class="ul-block"]/li') as $liNode) {
echo $liNode->nodeValue, '<br />';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.