解析HTML是无效的XML

时间:2011-03-07 15:25:29

标签: perl

我需要解析一个遍布有很多嵌套<div>的网站。我尝试使用XML::Simple来获得一个漂亮的树结构,但是解析一直失败,因为似乎有两个或三个未关闭的<p>。我试过HTML::Parser,但这只能让我定义一些处理函数,它们给我正确的标签,但不是它们的嵌套元素。

有没有办法让XML::Simple接受无效的XML或HTML::Parser给我一个方便的树结构?

3 个答案:

答案 0 :(得分:6)

HTML::TreeBuilder构建了漂亮的树,并提供了大量方便的方法来遍历它。

答案 1 :(得分:6)

基于HTML::TreeBuilder的内容的替代方法是XML::LibXML->load_html(...)

答案 2 :(得分:3)

但是HTML有效吗?如果是这样,如果您使用HTML解析函数,XML::LibXML将完成一项了不起的工作。它闪电般快速,提供了很好的界面。它甚至应该能够使用recover选项处理一些错误的HTML。

或者,HTML::Parser(通常通过HTML::TreeBuilderHTML::TreeBuilder::XPath使用)因处理错误的HTML而闻名。但它不会那么快。