doutale7115 2014-09-05 08:02
浏览 56
已采纳

PHP简单的HTML DOM解析器

I am working with simple web crawler. Below is simple html code i used to learn.

input.php

<ul id="nav">
    <li>
        <a href="www.google.com">Google</a>
        <ul>
            <li>
                <a href="mail.gmail.com">Gmail</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="www.yahoo.com">Yahoo</a>
        <ul>
            <li>
                <a href="mail.yahoo.com">Yahoo Mail</a>
            </li>
        </ul>
    </li>
</ul>

I need to crawl the first anchor tag in ul[id=nav]->li. The code i used to crawl input.php is

<?php
    include 'simple_html_dom.php';
    $html = file_get_html('input.php');

    foreach ($html->find('ul[id=nav]') as $navUL){
        foreach ($navUL->find('li') as $navUL_LI){
            echo $navUL_LI->find('a',0)->outertext."<br>";              
        }
    }
?>

It Displays all the anchor tag in my input.php. I need to display only google and yahoo. How can i achieve this?

  • 写回答

6条回答 默认 最新

  • dongzhi5587 2014-09-05 08:14
    关注

    In this case you can directly point it out with children() method. Example:

    foreach($html->find('ul#nav') as $ul) {
        foreach($ul->children() as $li) {
            echo $li->children(0)->outertext . '<br/>';
        }
    }
    

    Alternatively, you can use DOMDocument + DOMXpath for this too:

    $dom = new DOMDocument();
    $dom->loadHTML($str);
    $xpath = new DOMXpath($dom);
    // directly target those links
    $links = $xpath->query('//ul[@id="nav"]/li/a');
    
    foreach($links as $a) {
        echo $a->nodeValue . '<br/>';
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染