【问题标题】:How to get last li's anchor tag with simple dom html in php如何在php中使用简单的dom html获取最后一个li的锚标签
【发布时间】:2012-05-29 05:41:32
【问题描述】:

我正在借助 PHP 中的简单 dom 抓取网页。

我在 curl 的帮助下获得了以下 html:

<ul><li>1</li><li>2</li><li>3</li><li><a href="http:abc.com">4</a></li></ul>

现在,我需要借助简单的 dom 对象来对位于该 ul 的最后 li 中的锚标记进行 href(链接)。请提供语法我该怎么做?

我已尝试使用以下代码,但我无法找到最后一个...

require_once 'simple_html_dom.php';
        $html = "<ul><li>1</li><li>2</li><li>3</li><li><a href="http:abc.com">4</a></li></ul>";
        $oDocumentModel = new simple_html_dom();
        $oDocumentModel->load($html);
        $ul = $oDocumentModel->find('ul',0);

【问题讨论】:

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


【解决方案1】:

您可以遍历 li 并将其转换为数组并找到最后一个元素。如果你有更小的 li 喜欢...

require_once 'simple_html_dom.php';
$html = "<ul><li>1</li><li>2</li><li>3</li><li><a href='http:abc.com'>4</a></li></ul>";
$oDocumentModel = new simple_html_dom();
$oDocumentModel->load($html);
$ul = $oDocumentModel->find('ul',0);

$items = array();
foreach( $ul->find('li') as $li ){
    $items[] = $li->plaintext;
}
$last = end($items);
print_r($last);

或者您可以使用 lastChild() 只需通过 http://simplehtmldom.sourceforge.net/manual_api.htm

【讨论】:

    【解决方案2】:

    您可以通过这种方式提取链接。

    $ul = $oDocumentModel->find('ul',0);
    $a = $ul -> lastChild() -> find('a'. 0);
    $href = $a -> href;
    

    【讨论】:

      【解决方案3】:

      使用 XPath://li[last()]/a/@href

      【讨论】:

        【解决方案4】:

        PHP 在 DOM 上很烂。 话虽这么说,我发现的用于解析 HTML 的最有用的插件是 phpQuery:http://code.google.com/p/phpquery/

        我建议使用它而不是 simple_html_dom。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-21
          • 1970-01-01
          相关资源
          最近更新 更多