2015-11-03 16 views
5

Szukam biblioteki do parsowania plików HTML w OCaml. Zasadniczo odpowiednik Jsoup/Beautiful Soup. Głównym wymaganiem jest możliwość zapytania do DOM z selektorami CSS. Coś w formieParsowanie HTML z OCaml

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

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

+0

dzięki. Znalazłem, ale wydaje się, że ich obsługa HTML nie jest tak solidna. "możesz natrafić na różne ograniczenia przy analizie danych wejściowych HTML. Mamy nadzieję, że rozwiążemy ten problem przed Krową 1.0, ale jeszcze jej nie ma ..." – gidim

+0

'ocamlnet' ma sposób na parsowanie HTML, chociaż nie wiem, czy to ma obsługę selektora. –

Odpowiedz

5

miałem potrzebę czegoś takiego niedawno, więc to pytanie po obejrzeniu i przeczytaniu zaleceń w komentarzach, napisałem bibliotekę „Lambda Soup” na weekend dla zabawy.

Będziesz chciał użyć biblioteki takiej jak ocurl lub Cohttp do pobrania rzeczywistego HTML. Po uzyskaniu tego możesz zrobić, aby wykonać to, co jest zadawane w pytaniu. Inne możliwości i pełny podpis można znaleźć pod adresem documentation. Możesz zajrzeć do dokumentacji postprocessor lub tests, aby uzyskać dość dokładną demonstrację użycia i możliwości, w tym obsługi i rozszerzeń CSS.

Według komentarzy Lambda Soup używa parsera HTML Ocamlnet. Zupa Lambda używa Markup.ml. W przeciwnym razie nie ma żadnych zależności, z wyjątkiem OUnit, jeśli chcesz uruchomić testy. Cieszę się z wszelkich opinii, w tym dotyczących modyfikacji interfejsu (jest na wczesnym etapie) lub dyskusji o dodaniu modułu pobierania HTTP do biblioteki (co wydaje się wątpliwe, ponieważ znacznie zmienia zakres biblioteki, tak jak teraz, ale Cieszę się, że słyszę argumenty).

Licencja to BSD.

+0

To wygląda świetnie! Dziękuję bardzo za całą pracę. Na pewno dam ci znać, jeśli mam jakieś uwagi. Zgadzam się, że dodanie pobierania HTTP jest zbędne na tym etapie. – gidim