/ / Cách phân tích cú pháp và tạo HTML trong Go

Cách phân tích cú pháp và tạo HTML trong Go

Phân tích cú pháp là phân tích và giải thích cấu trúc của tài liệu. Quá trình phân tích cú pháp có thể bao gồm trích xuất các phần tử, thuộc tính hoặc dữ liệu cụ thể từ tài liệu và xác minh rằng tài liệu được định dạng đúng trong khi tuân theo các tiêu chuẩn hoặc quy tắc cụ thể. Phân tích cú pháp chủ yếu được sử dụng để trích xuất dữ liệu từ các trang web hoặc thao tác cấu trúc của các trang web trước khi hiển thị chúng cho người dùng.


Go cung cấp các gói để làm việc với tài liệu, bao gồm các định dạng HTML và XML được sử dụng phổ biến trong các trang web. Các html gói cung cấp các chức năng để mã hóa và phân tích cú pháp HTML.


Gói HTML

Các html gói cung cấp trình mã thông báo và trình phân tích cú pháp tuân thủ HTML5 để phân tích cú pháp và thao tác các tài liệu HTML, duyệt qua cây phân tích cú pháp và thao tác cấu trúc cây. Các html gói là gói tích hợp trong thư viện tiêu chuẩn của Go.

Một trong những tính năng chính của html gói là phân tích cú pháp chức năng có thể phân tích tài liệu HTML và trả về nút gốc của cây phân tích cú pháp, từ đó bạn có thể sử dụng các chức năng như đứa con đầu lòngTiếp theoAnh chị em để điều hướng cây và trích xuất thông tin từ tài liệu. Gói này cũng cung cấp phân tích cú pháp chức năng phân tích các đoạn văn bản HTML.

Các EscapeString chức năng tiện dụng để thoát các ký tự đặc biệt trong chuỗi để đưa vào HTML an toàn hơn; bạn có thể sử dụng chức năng này để ngăn chặn các cuộc tấn công cross-site scripting (XSS) bằng cách chuyển đổi các ký tự đặc biệt thành các thực thể HTML tương ứng của chúng.

Để bắt đầu với html gói, bạn có thể nhập gói vào tệp dự án Go của mình.

 import "golang.org/x/net/html"

Các html gói không cung cấp bất kỳ chức năng nào để tạo HTML. Thay vào đó, bạn có thể sử dụng gói html/template, gói này cung cấp một bộ chức năng để tạo các mẫu HTML. Các html/mẫu gói cung cấp một chức năng mẫu.HTMLEscape để viết các phiên bản HTML đã thoát cho người viết phản hồi.

Các html/mẫu gói cũng là một phần của thư viện chuẩn và đây là cách bạn có thể nhập gói.

 import "html/template"

Các html gói là gói tạo khuôn mẫu được sử dụng phổ biến nhất trong hệ sinh thái Go và hỗ trợ nhiều loại hoạt động và dữ liệu khác nhau.

Phân tích cú pháp HTML trong Go

Các phân tích cú pháp chức năng của html gói giúp phân tích cú pháp văn bản và tài liệu HTML. Các phân tích cú pháp chức năng mất trong một io.Reader vì đây là đối số đầu tiên chứa tài liệu tệp và dấu *html.Node ví dụ, là nút gốc của tài liệu HTML

Đây là cách bạn có thể sử dụng phân tích cú pháp chức năng phân tích cú pháp một trang web và trả về tất cả các URL trên trang web.

 import (
    "fmt"
    "golang.org/x/net/html"
    "net/http"
)

func main() {
    
    resp, err := http.Get("https://www.example.com")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer resp.Body.Close()

    
    doc, err := html.Parse(resp.Body)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    
    
    var links []string
    var link func(*html.Node)
    link = func(n *html.Node) {
        if n.Type == html.ElementNode && n.Data == "a" {
            for _, a := range n.Attr {
                if a.Key == "href" {
                    
                    links = append(links, a.Val)
                }
            }
        }

        
        for c := n.FirstChild; c != nil; c = c.NextSibling {
            link(c)
        }
    }
    link(doc)

    
    for _, l := range links {
        fmt.Println("Link:", l)
    }
}

Các chủ yếu chức năng gửi một yêu cầu HTTP GET đến trang web với Được chức năng của http gói và truy xuất nội dung phản hồi của trang. Các phân tích cú pháp chức năng của html gói phân tích nội dung phản hồi và trả về tài liệu HTML.

Các liên kết biến là phần chuỗi sẽ chứa các URL từ trang web. Các liên kết hàm lấy tham chiếu con trỏ đến Nút phương pháp cho html gói, và Chìa khóa phương thức của thể hiện thuộc tính từ nút trả về dữ liệu chứa trong một thuộc tính đã chỉ định (trong trường hợp này, href). Chức năng duyệt qua tài liệu với Tiếp theoAnh chị em phương pháp từ đứa con đầu lòng nút để in mọi URL trên trang web. Cuối cùng, vòng lặp for in tất cả các URL từ liên kết lát cắt.

Đây là kết quả của hoạt động.

kết quả của việc truy xuất các liên kết từ một trang web

Tạo HTML trong Go

Các html/mẫu gói cung cấp một tập hợp các chức năng để phân tích cú pháp và thực thi các mẫu HTML một cách an toàn và hiệu quả. Gói này được thiết kế để sử dụng kết hợp với html gói, cung cấp các chức năng để phân tích cú pháp và thao tác HTML.

Bạn có thể tạo HTML để hiển thị phía máy chủ bằng html/mẫu bưu kiện. Tạo HTML thuận tiện cho nhiều trường hợp sử dụng như gửi email, kết xuất giao diện người dùng phía máy chủ và nhiều trường hợp khác. Bạn có thể sử dụng các loại dữ liệu Go tích hợp sẵn như bản đồ và cấu trúc để tương tác và thao tác với HTML của trang web của bạn.

Bạn sẽ cần hiểu cú pháp tạo khuôn mẫu Go HTML để tạo thành công HTML với html/mẫu bưu kiện.

 import (
    "html/template"
    "os"
)

type webPage struct {
    Title string
    Heading string
    Text string
}

func main() {
    
    tmpl := `
<!DOCTYPE html>
<html>
<head>
    <title>{{.Title}}</title>
</head>
<body>
    <h1>{{.Heading}}</h1>
    <p>{{.Text}}</p>
</body>
</html>`

    
    web := webPage{
        Title: "An Example Page",
        Heading: "Welcome to my website!",
        Text: "This is the home page of my website.",
    }

    
    t, err := template.New("webpage").Parse(tmpl)
    if err != nil {
        panic(err)
    }

    
    err = t.Execute(os.Stdout, web )
    if err != nil {
        panic(err)
    }
}

Các tmpl biến chứa chuỗi HTML. Chuỗi HTML sử dụng cú pháp tạo khuôn mẫu Go để xác định tiêu đề trang, một h1 tiêu đề và một đoạn văn bản. Các trang web struct xác định các trường dữ liệu cho trang web với Chức vụ, Phần mở đầuChữ lĩnh vực.

Các phân tích cú pháp phương pháp của Mới chức năng của gói mẫu tạo và phân tích cú pháp mẫu mới bằng chuỗi mẫu. Các Hành hình chức năng của phiên bản mẫu mới thực thi mẫu với dữ liệu từ phiên bản cấu trúc của bạn và trả kết quả về đầu ra tiêu chuẩn (trong trường hợp này, nó in kết quả ra bàn điều khiển).

kết quả từ việc tạo html

Xây dựng ứng dụng web với Go

Tìm hiểu về phân tích cú pháp và tạo HTML bằng Go là một bước đi đúng hướng để xây dựng các ứng dụng web phức tạp hơn bằng Go. Bạn có thể sử dụng các khung như Gin và Echo và các bộ định tuyến như Gorilla Mux và Bộ định tuyến Chi để xây dựng phía máy chủ của ứng dụng web của bạn.

Các gói này được xây dựng trên mạng/http gói (gói tích hợp để tương tác với HTTP trong Go) và tóm tắt sự phức tạp của việc thiết lập máy chủ và bộ định tuyến trong Go.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *