0

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

4

2 回答 2

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),它不会改变。

于 2013-10-03T13:27:11.977 回答
0

似乎没有一种向后解析的方法,所以我使用以下方法通过获取数组中的所有标签,使用 count() 获取总数,然后访问比元素总数少两个的数组。

$html = $datain->find('a');
$html_ind = $html[count($html)-2];
$result = $html_ind->plaintext;
于 2013-10-03T14:18:58.837 回答