简单的DOM和<li> </li>

时间:2013-01-13 22:08:50

标签: php dom

我尝试了几种不同的方法,但似乎没有任何效果。 (我尝试了How to imitate child selector with Simple HTML DOM?处的所有示例)按原样使用代码,改变我需要的东西,即class = xxx和url。

所以我正在尝试从网页中提取一些信息。就DOM而言,没有孩子可以使用,并且使用xpath方法没有返回任何内容。我猜我做错了什么。

<div id="wpp-6" class="widget popular-posts">
    <div class="widget_title">POPULAR</div><!-- Wordpress Popular Posts Plugin v2.3.2         [Widget] [daily] [regular] -->
    <ul>
        <li>
            <a href="http://link.html" title="Title of post" class="wpp-post-title">THE DATA I    WANT</a> <span class="post-stats"></span>
        </li>
        <!-- More lists -->
    </ul>
</div>

之后还有大约9个列表语句。 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用PHP Simple HTML DOM Parser您可以轻松完成,只需下载simple_html_dom.php文件from here并按如下方式使用即可。

include('simple_html_dom.php');
$html=file_get_html('http://psfk.com');
foreach($html->find('div#wpp-6 ul li a') as $a){
    echo $a->innertext.'<br />';
}

输出(将于2013年1月14日星期一测试)

  

谷歌流感地图描绘了美国最严重的疫情

     

Scotch-Tape Portraits Contort Human Faces [Pics]

     

奥威尔1949年四大亮点主题的新设计   审查

     

伏特加过滤酒裸体模特[视频]

     

三星推出灵活屏幕

     

麦当劳在澳大利亚更名:

     

三星的透明屏幕是未来的零售窗口   [CES]

     

Dita Von Teese将QR码直接送入她的衣服

     

Abercrombie&amp;惠誉老板让飞行服务员只穿拳击手   &安培;私人飞机上的凉鞋

     镜子应用程序向女性展示如果她们继续饮酒会如何年龄

如果您想使用link <a>...</a>打印标题,请使用echo $a

答案 1 :(得分:0)

我使用xpath已经有一段时间了,所以这是我的解决方案 您可以通过这种方式遍历DOM树,检查所需元素的id和类

<?php
    error_reporting(0); //needed because of invalid xml




    $url = "http://www.psfk.com";

    $xml = new DOMDocument("1.0", 'UTF-8'); 
    $str = file_get_contents($url);


    // Load the url's contents into the DOM 
    $xml->loadHTML($str); 



    //Loop through all divs in the dom until we find what we need 
    foreach($xml->getElementsByTagName('div') as $div) {
        if($div->getAttribute('id') == 'wpp-6' && $div->getAttribute('class') == 'widget popular-posts') {
            if($div->parentNode->getAttribute('id') == 'right') {
                foreach($div->getElementsByTagName('li') as $li) {
                    foreach($li->getElementsByTagName('a') as $link) {
                        echo $link->textContent . "<br>";;
                    }
                }
            }
        }


    }

?>