2

我在 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

4 回答 4

2

您可以遍历 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

于 2012-05-29T06:07:04.860 回答
2

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

$ul = $oDocumentModel->find('ul',0);
$a = $ul -> lastChild() -> find('a'. 0);
$href = $a -> href;
于 2012-05-29T06:53:26.657 回答
0

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

于 2012-06-06T16:02:23.870 回答
-1

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

我建议使用它而不是 simple_html_dom。

于 2012-05-29T06:05:57.247 回答