2015-11-03 20 views
5

Ich bin auf der Suche nach einer Bibliothek zum Parsen von HTML-Dateien in OCaml. Grundsätzlich das Äquivalent von Jsoup/Beautiful Soup. Die Hauptanforderung besteht darin, das DOM mit CSS-Selektoren abfragen zu können. Etwas in Form vonParsing HTML mit OCaml

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

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

+0

danke. Ich fand das, aber es scheint, dass ihre HTML-Unterstützung nicht so robust ist. "Sie können verschiedene Einschränkungen mit HTML-Eingabe-Parsing treffen. Wir hoffen, dies vor Cow 1.0 zu lösen, aber es ist noch nicht da ..." – gidim

+0

'ocamlnet' hat eine Möglichkeit, HTML zu analysieren, obwohl ich nicht weiß, ob es hat die Wahlhilfe. –

Antwort

5

hatte ich ein Bedürfnis nach so etwas wie dies vor kurzem, so dass nach dieser Frage sehen und die Empfehlungen in den Kommentaren zu lesen, habe ich eine Bibliothek „Lambda Soup“ über das Wochenende zum Spaß geschrieben.

Sie möchten eine Bibliothek wie ocurl oder Cohttp verwenden, um den tatsächlichen HTML-Code abzurufen. Nachdem Sie es haben, können Sie tun

html |> parse $ "#tag" 

zu tun, was in der Frage gefragt wird. Weitere Möglichkeiten und die vollständige Signatur finden Sie unter documentation. Vielleicht möchten Sie die Dokumentation postprocessor oder tests für eine ziemlich gründliche Demonstration der Verwendung und Funktionen, einschließlich CSS-Unterstützung und Erweiterungen.

Pro Kommentar verwendet Lambda Soup Ocamlnet HTML-Parser. Lambda Suppe verwendet Markup.ml. Ansonsten hat es keine Abhängigkeiten außer OUnit, wenn Sie die Tests ausführen möchten. Ich freue mich über jede Rückmeldung, einschließlich über das Ändern der Schnittstelle (es ist in einem frühen Stadium) oder Diskussionen über das Hinzufügen eines HTTP-Downloaders zur Bibliothek (das scheint zweifelhaft, weil es den Umfang der Bibliothek ändert, wie es jetzt ist, aber Ich bin glücklich, Argumente zu hören).

Die Lizenz ist BSD.

+0

Das sieht gut aus! Vielen Dank für Ihre Arbeit. Ich werde dich auf jeden Fall wissen lassen, wenn ich irgendwelche Bemerkungen habe. Ich stimme zu, dass das Hinzufügen von HTTP-Download zu diesem Zeitpunkt überflüssig ist. – gidim