2013-03-18 35 views

Trả lời

17

Enlive là một công cụ tuyệt vời cho việc này. Nói tóm lại:

(ns foo.bar 
    (:require [net.cgrand.enlive-html :as html])) 

(defn fetch-page [url] 
    (html/html-resource (java.net.URL. url))) 

Here là một hướng dẫn tốt đẹp về việc sử dụng nó cả hai như là một scraper/phân tích cú pháp và như là một mẫu động cơ:

Here là một ví dụ ngắn cạo một trang.

Tùy chọn khác là clj-tagsoup. Phần mở rộng cũng sử dụng các thẻ, nhưng ngoài ra còn có một trình phân tích cú pháp có thể cắm để bạn có thể thêm hỗ trợ cho các trình phân tích cú pháp khác.

+0

Tôi có thể phân tích cú pháp tệp html mà không cần một trình phân tích cú pháp hoặc trình phân tích cú pháp khác, chỉ sử dụng clojure không? – slawter

+0

Vâng, bạn có thể lấy nội dung của trang web dưới dạng chuỗi chỉ bằng cách thực hiện: (slurp "http://www.example.com"), nhưng để làm việc với nội dung theo cách có thể quản lý, bạn cần một trình phân tích cú pháp (như phóng đại). – ebaxt

4

Clojure's xmlparsing thư viện có sẵn cho bạn.

Phân tích và tải nguồn s, có thể là Tệp, Dòng đầu vào hoặc Chuỗi đặt tên cho URI. Trả về một cây của sơ đồ cấu trúc xml/element, có thẻ: thẻ,: attrs và: content. và thẻ fns accessor, attrs và nội dung. phân tích cú pháp khác có thể được cung cấp bằng cách đi qua startparse, một fn tham gia một nguồn và một ContentHandler và trả về một phân tích cú pháp

Hoặc sử dụng enlive, đó là khuôn khổ đầy đủ trên clojure hoặc sử dụng Java dựa HtmlCleaner.

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