Swift:解析 HTML 的最快方法

Swift: fastest way to parse HTML

提问人:galacann 提问时间:11/25/2014 最后编辑:Alan Mooregalacann 更新时间:10/6/2015 访问量:1507

问:

我有一个很大的源代码文件,我需要从中解析一些特定的文本。我想尽快完成它。在 Swift 中执行此操作的最快方法是什么?这些都是我能想到的选择?

  • 使用第三方字符串函数库 - 我已经尝试过了。它运行良好,但我认为与其他低级方法相比,这要慢得多,除非有一些专门针对 Swift 的特别快的方法。

  • 使用第三方 HTML 解析器。我已经研究了一些,但我不确定它们是否适合我的需求。在我继续之前,我只想知道这些是否通常更快,是否有任何值得注意的快速,以及我是否能够调整它们以从源代码中获得我想要的东西。

  • 使用 String 或 NSString。据我了解,使用 String vs NSString 应该不会在速度上产生任何差异。我对这种方法很满意,而且它比其他一些方法的水平要低,所以我应该期待相当快的性能吗?

  • 使用正则表达式。有人告诉我,由于这些是较低级别的,理想情况下它们应该是最快的。我以前使用过正则表达式,但在 ios 中没有。使用 NSRegularExpression 进行字符串解析是否容易,速度更快?

谢谢!

正则表达式 SWIFT HTML 解析

评论

2赞 d0nut 8/11/2015
blog.codinghorror.com/parsing-html-the-cthulhu-way 与你的最后一点如此相关,这很痛苦。不要使用正则表达式
0赞 Everyone_Else 8/21/2015
为了扩展 iismathwizard 的有效观点,html 不应该用正则表达式解析的原因是 html 的正则表达式太复杂了,并且充满了麻烦的特殊字符。
0赞 CodaFi 8/21/2015
如果你要把这个文本加载到某种 WebView 中,你可能应该只使用 JavaScript[Core] 让 WebKit 为你处理这个问题。如果没有,愿众神怜悯你的灵魂。
0赞 binarymason 9/30/2015
如果你现在才刚刚开始你的 Swift 之旅,我建议你看看其他语言,这些语言并不只针对一个操作环境。现有的脚本语言,如 Ruby,它们具有出色的代码库,可以完成您想要的东西。Nokogiri 会完美地做你想做的事,而且易于使用。使用 Ruby 进行移动开发即将到来。- 对于 iOS,请查看 RubyMotion - 对于 Android,请查看 Ruboto

答:

0赞 Scott H 10/6/2015 #1

在研究您的问题时发现了此链接:http://benedictcohen.co.uk/blog/archives/74

作者解释了@CodaFi建议的旧方法,但最后有一个相关的更新,你应该看看:

解析 HTML 的最简单方法是将其视为 XML 并使用 NSXMLParser 中。iOS 附带 LibTidy,它能够修复 众多的加价罪过。使用 LibTidy 创建干净的 XML 并传递 此 XML 转换为 NSXMLParser。仅使用上述方法,如果它是 无法使用 NSXMLParser。

那么也许选项 4 或 5 供您查看?