2016-12-29 26 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的服務器,這給在內容提取方面更好的結果,是更少的內存密集型的客戶端上運行的路易斯可讀性。