2015-11-03 42 views
5

Tôi đang tìm thư viện để phân tích cú pháp các tệp HTML trong OCaml. Về cơ bản tương đương với Jsoup/Beautiful Soup. Yêu cầu chính là có thể truy vấn DOM bằng bộ chọn CSS. Something theo hình thứcPhân tích cú pháp HTML với OCaml

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

điều gì về https://github.com/mirage/ocaml-cow – objmagic

+0

cảm ơn. tôi thấy rằng, nhưng có vẻ như sự hỗ trợ HTML của họ không phải là mạnh mẽ. Chúng tôi hy vọng sẽ giải quyết vấn đề này trước Cow 1.0, nhưng nó chưa có ... " – gidim

+0

' ocamlnet' có cách phân tích cú pháp HTML, mặc dù tôi không biết có hỗ trợ bộ chọn. –

Trả lời

5

Tôi đã có một nhu cầu cho một cái gì đó như thế này thời gian gần đây, vì vậy sau khi nhìn thấy câu hỏi này và đọc các khuyến nghị trong các ý kiến, tôi đã viết một thư viện "Lambda Soup" cuối tuần qua cho vui.

Bạn sẽ muốn sử dụng thư viện như ocurl hoặc Cohttp để truy xuất HTML thực tế. Sau khi bạn có nó, bạn có thể làm

html |> parse $ "#tag" 

để làm những gì được hỏi trong câu hỏi. Đối với các khả năng khác và chữ ký đầy đủ, hãy xem documentation. Bạn có thể xem tài liệu postprocessor hoặc tests để có minh chứng rõ ràng về mức sử dụng và khả năng, bao gồm hỗ trợ và tiện ích mở rộng CSS.

Mỗi nhận xét, Lambda Soup sử dụng trình phân tích HTML của Ocamlnet. Lambda Soup sử dụng Markup.ml. Nếu không, nó không có phụ thuộc, ngoại trừ OUnit nếu bạn muốn chạy thử nghiệm. Tôi rất vui vì bất kỳ phản hồi nào, bao gồm việc sửa đổi giao diện (nó đang ở giai đoạn đầu) hoặc thảo luận về việc thêm trình tải xuống HTTP vào thư viện (có vẻ như không rõ vì nó thay đổi phạm vi của thư viện như bây giờ, nhưng Tôi rất vui khi được nghe lập luận).

Giấy phép là BSD.

+0

Điều này có vẻ tuyệt vời! Cảm ơn rất nhiều vì tất cả công việc của bạn. Tôi chắc chắn sẽ cho bạn biết nếu tôi có bất kỳ nhận xét nào. Tôi đồng ý rằng việc thêm tải xuống HTTP là không cần thiết ở giai đoạn này. – gidim

Các vấn đề liên quan