获取特定<div> </div> </li>下的所有<li>

时间:2014-03-25 10:37:10

标签: html web-scraping web-crawler simple-html-dom

我使用Curl抓取网址,SIMPLE HTML DOM获取数据。我想要<li>下的数据。但问题是页面上还有其他<ul><li>。他们没有课程或身份证。这是我的html代码。

<div class="parent" id="parent">
    <div class="child">
        <div class="grandchild">
            <p>Text Paragraph</p>
            <h2>Heading</h2>
            <ul>
                <li>Heading Date Text</li>
                <li>Heading Date Text</li>
                <li>Heading Date Text</li>
                <li>Heading Date Text</li>
                <li>Heading Date Text</li>
            </ul>
            <p>Text</p>
        </div>
    </div>
</div>

只有顶级div的id是唯一的。

2 个答案:

答案 0 :(得分:3)

您可以使用以下方法检索li项目:

foreach ($html->find("#parent li") as $li)
    echo $li->plaintext . "\n";

不需要对UL进行双重迭代,然后再进行LI迭代。

答案 1 :(得分:2)

这会给你结果。

$html = str_get_html('<div class="parent" id="parent">
<div class="child">
    <div class="grandchild">
        <p>Text Paragraph</p>
        <h2>Heading</h2>
        <ul>
            <li>Heading Date Text</li>
            <li>Heading Date Text</li>
            <li>Heading Date Text</li>
            <li>Heading Date Text</li>
            <li>Heading Date Text</li>
        </ul>
        <p>Text</p>
    </div>
</div>
</div>');

foreach($html->find('div#parent ul') as $ul) 
{
   foreach($ul->find('li') as $li) 
   {
        echo $li->plaintext."<br>";
   }
}