Phân Tích Cú Pháp HTML

Clojure:
Phân Tích Cú Pháp HTML

Làm thế nào:

Để đọc HTML trong Clojure, chúng tôi sử dụng thư viện clj-tagsoup, một bộ bọc cho thư viện Tagsoup Java rất tiện lợi để đọc HTML thực tế.

Đầu tiên, thêm phụ thuộc clj-tagsoup vào dự án của bạn:

[clj-tagsoup "0.3.3"] ; Kiểm tra phiên bản mới nhất

Bây giờ, hãy đọc một số HTML:

(require '[clj-tagsoup.core :as tagsoup])

; Đọc HTML và nhận một vector của các bản đồ đại diện cho các phần tử được đọc
(def parsed-html (tagsoup/parse-string "<html><body><p>Hello, World!</p></body></html>"))

; Truy cập các phần tử
(println (first parsed-html))

Kết quả mẫu:

{:tag :html, :attrs {}, :content [...]}

Để trích xuất các phần tử cụ thể, như đoạn văn:

(defn extract-paragraphs [html]
  (let [parsed (tagsoup/parse-string html)]
    (filter #(= :p (:tag %)) parsed)))

; Sử dụng
(extract-paragraphs "<p>Đầu tiên</p><p>Thứ hai</p>")

Sâu hơn nữa

Đọc HTML trong Clojure, giống như với các ngôn ngữ khác, thường liên quan đến việc duyệt qua một cấu trúc giống như cây. Ngày xưa, điều này có thể gây rối. Các thư viện như Tagsoup làm cho cuộc sống dễ dàng hơn bằng cách xử lý HTML thực tế kỳ quặc.

Bản chất hàm của Clojure cho phép chúng ta thao tác dữ liệu HTML một cách mượt mà. Các thư viện như clj-tagsoup tận dụng các công cụ đã được kiểm định của Java trong khi thêm vào sự tinh tế của Clojure.

Các thư viện thay thế bao gồm EnliveHickory. Enlive chuyên về cả đọc và tạo mẫu, cho phép thực hiện các thao tác phức tạp hơn. Hickory chuyển HTML thành các cấu trúc dữ liệu Clojure cho những người thích một giải pháp Clojure thuần túy.

Việc triển khai tập trung vào sự dễ dàng và phong cách khai báo. Bên dưới lớp vỏ, clj-tagsoup sử dụng các bộ định vị và điều hướng viên để duyệt qua HTML, cung cấp một trừu tượng cao hơn so với thao tác DOM trực tiếp.

Xem thêm