简单的HTML DOM向后解析

时间:2013-10-03 09:40:54

标签: html simple-html-dom

我正在尝试获取页面上倒数第二个标签的内容。我找不到它,但希望可以从下到上解析以按顺序查找第二个标记,而不是将所有内容放入数组并从最后一个元素中计算一个。向后工作的原因是我从中抽取的页面是动态的,可能有数百个标签比我想要的更多。

2 个答案:

答案 0 :(得分:1)

对于任何动态页面,它必须是您请求的时间“静态”,尽管下次可能会更改。以相反的顺序解析页面是没有意义的,据我所知,html页面没有逆序解析器算法。

这是我的解决方案:在大多数情况下,动态页面也相对“静态”,页面标题始终位于顶部,页脚始终位于底部。

你需要做的就是找出与之相关的“静态”标签。

假设您希望在此stackoverflow页面的底部获取整行版权信息。这是一个正确的假设,因为版权信息几乎是该页面的倒数第二个标签,而且这个页面显然是动态的。

我可以找到它的id是:// * [@ id =“copyright”](实际上它是一个xpath,而不是id,但这里并不重要)。您可以查看此页面的源文件,或者更简单地使用诸如firebug或digpage之类的工具。并且id(xpath)相对“静态”。

当我在这里回答您的问题时,此页面上没有任何答案。但是,当您阅读此帖时,我的答案将被插入此页面,并且页面肯定会更改。但是,版权信息的xpath仍然是// * [@ id =“copyright”]。换句话说,digpage仍然可以为您获取正确的标签。

以下是我在提交答案之前从digpage获得的版权信息:

site design / logo © 2013 stack exchange inc; user contributions licensed under cc-wiki 
            with attribution required

你可以自己尝试(http://www.digpage.com/utility),它不会改变。

答案 1 :(得分:0)

似乎没有办法向后解析所以我使用以下方法来获取数组中的所有标记,使用count()获取总数,然后访问数组两个小于总数元件。

$html = $datain->find('a');
$html_ind = $html[count($html)-2];
$result = $html_ind->plaintext;