在iPhone上解析脏HTML

时间:2010-01-09 00:56:58

标签: iphone html cocoa cocoa-touch parsing

我已经搜索了很长时间以获得一个好的解决方案,但我找不到符合我需求的任何东西......

我想解析HTML文件并在表格中显示其内容。一切都像写另一个RSS提要阅读器。通过解析有效的XML文件来实现这一点很简单,直接使用NSXMLParser或TouchXML或libxml直接或其他一些XML解析...但这些框架只能使用XML和/或不使用非整洁的HTML。该网站包括div,包括链接,包括图像或段落,包括链接和图像等...只是一个普通的网站。在这种情况下,使用libxml似乎太复杂了。

有人在解析脏HTML页面方面有更多经验吗?您使用了哪个(免费)库/框架?我觉得我只是错过了一些明显的东西。解析HTML文件不是很难吗?

我希望你能指出我正确的方向!

5 个答案:

答案 0 :(得分:1)

WebKit应该处理脏HTML并允许您使用“Page”和“Frame”类访问DOM树。那些包含按ID等查找元素的函数。

答案 1 :(得分:1)

查看同样在iPhone上的libxml2库,并附带一个内置的HTML parser。声称处理真实世界 HTML:

此模块实现了一个HTML 4.0非验证解析器,其API与XML解析器兼容。它应该能够解析“真实世界”的HTML,即使从规范的角度严重破坏。

答案 2 :(得分:1)

如果您需要解析大部分页面,尝试按照Anurag使用libXML2是一个好主意。

如果您只想从文件中获取小段数据,最好使用RegEx表达式读取数据 - 还有一个内置的正则表达式库,您可以使用包装器RegExKitLite来访问。

答案 3 :(得分:1)

前段时间我不得不这样做。最后,在使用TouchXML解析HTML之前,我最终使用HTML Tidy来清理HTML。

当我这样做时,HTML Tidy文档不是很清楚(恕我直言)所以我不得不挖掘一下以了解它实际上是如何工作的。如果现在没有太多时间,但我可以查看我想出的代码。

可以在此处找到HTML Tidy的源代码(以及更多内容)。 http://tidy.sourceforge.net/

答案 4 :(得分:0)

我没有经验,但是...你不能使用WebKit的解析器吗?我想它应该暴露某种DOM,而不必渲染页面。