2015-11-03 77 views
5

我正在尋找一個庫來解析OCaml中的HTML文件。 基本上相當於Jsoup /美麗的湯。 主要的要求是能夠用CSS選擇器查詢DOM。 東西在用OCaml解析HTML

page.fetch("http://www.url.com") 
page.find("#tag") 
+0

https://github.com/mirage/ocaml-cow – objmagic

+0

謝謝。我發現,但似乎他們的HTML支持不是那麼強大。 「你可能會在HTML輸入解析中遇到各種限制,我們希望在牛1.0之前解決這個問題,但它還沒有......」 – gidim

+0

「ocamlnet」有一種解析HTML的方法,但我不知道它是否有選擇器支持。 –

回答

5

形式我有必要這樣的事情最近,所以看到這個問題,並在評論中閱讀的建議後,我寫了一庫「Lambda Soup」在上週末的樂趣。

您將需要使用像ocurl或Cohttp這樣的庫來檢索實際的HTML。收到後,你可以做

html |> parse $ "#tag" 

做問題的問題。有關其他可能性和完整簽名,請參閱documentation。您可能需要查看文檔postprocessortests,以獲得相當全面的用法和功能演示,包括CSS支持和擴展。

根據評論,Lambda Soup使用Ocamlnet的HTML解析器。 Lambda湯使用Markup.ml。否則,它沒有依賴關係,除了OUnit,如果你想運行測試。我很高興收到任何反饋意見,包括修改界面(它處於早期階段)或討論在圖書館添加HTTP下載器(這看起來很不妥,因爲它大大改變了現在的圖書館的範圍,但我很高興聽到有關論據)。

許可證是BSD。

+0

這看起來不錯!非常感謝你的工作。如果我有任何評論,我一定會通知你。我同意在這個階段添加HTTP下載是多餘的。 – gidim