如何在php中使用简单的dom html获取最后一个li的锚标记

时间:2012-05-29 05:41:32

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

我正在使用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对象的帮助下href(链接)这个ul的最后一个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);

4 个答案:

答案 0 :(得分:2)

你可以循环遍历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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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

我建议使用它而不是simple_html_dom。