我需要解析一个遍布有很多嵌套<div>
的网站。我尝试使用XML::Simple
来获得一个漂亮的树结构,但是解析一直失败,因为似乎有两个或三个未关闭的<p>
。我试过HTML::Parser
,但这只能让我定义一些处理函数,它们给我正确的标签,但不是它们的嵌套元素。
有没有办法让XML::Simple
接受无效的XML或HTML::Parser
给我一个方便的树结构?
答案 0 :(得分:6)
HTML::TreeBuilder构建了漂亮的树,并提供了大量方便的方法来遍历它。
答案 1 :(得分:6)
基于HTML::TreeBuilder的内容的替代方法是XML::LibXML->load_html(...)。
答案 2 :(得分:3)
但是HTML有效吗?如果是这样,如果您使用HTML解析函数,XML::LibXML将完成一项了不起的工作。它闪电般快速,提供了很好的界面。它甚至应该能够使用recover
选项处理一些错误的HTML。
或者,HTML::Parser(通常通过HTML::TreeBuilder或HTML::TreeBuilder::XPath使用)因处理错误的HTML而闻名。但它不会那么快。