2016-12-29 67 views
0

给定一个网页,我想提取读者视图中的文本。我知道SFSafariViewController提供了一个阅读器模式,但对于我的应用程序,我需要实际的文本字符串。我也知道Mercury parser,但我更喜欢本地运行的解决方案。如何获得一个良好的网络阅读器的iOS

我已经尝试了多种选择:

luin/Readability看起来很有趣。这似乎是一个非常活跃的Github项目。但是,我无法让它在iOS下工作。我试了一下/ DID:

我安装和使用browserify得到一个独立的JavaScript文件。但是,我收到了一条错误消息Error: Mismatched anonymous define() module。我读到这个问题可以通过使用derequire来解决。我尝试过但没有成功。

谁能给我就如何使在iOS上,luin /可读性工作的一些建议可能通过使用browserify或以任何其他方式?

回答

1

我在项目,需要从可读性呈现HTML作为TextView中也有类似的问题。我最初的做法是通过使用WKWebViewevaluateJavaScript注入稍微修改Mozilla的可读性使用WKWebView渲染。

Mozilla的可读性代码被存储为本地文件,并通过添加以下代码修改:然后

// Execute Readbility on the currently loaded DOM 

var uri = { 
spec: location.href, 
host: location.host, 
prePath: location.protocol + "//" + location.host, 
scheme: location.protocol.substr(0, location.protocol.indexOf(":")), 
pathBase: location.protocol + "//" + location.host + location.pathname.substr(0, location.pathname.lastIndexOf("/") + 1) 
}; var documentClone = document.cloneNode(true); var article = new Readability(uri, documentClone).parse(); article; 

所得内容是使用DTCoreText渲染。 WKWebView将加载网页的所有资源,包括所有图片,广告等,这使得该方法非常内存密集型,我试图通过解析并将它传递给WKWebView之前去除图像规避这一点。总的来说,这是有效的,但取决于你的用例可能不是非常优雅或快速。

目前我使用了不同的方法,其中包括使用phantomJS的服务器,这给在内容提取方面更好的结果,是更少的内存密集型的客户端上运行的路易斯可读性。