Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Η ανάλυση είναι η ανάλυση και η ερμηνεία της δομής ενός εγγράφου. Η διαδικασία ανάλυσης μπορεί να περιλαμβάνει την εξαγωγή συγκεκριμένων στοιχείων, χαρακτηριστικών ή δεδομένων από το έγγραφο και την επαλήθευση ότι το έγγραφο είναι καλά μορφοποιημένο, ακολουθώντας συγκεκριμένα πρότυπα ή κανόνες. Η ανάλυση χρησιμοποιείται κυρίως για την εξαγωγή δεδομένων από ιστοσελίδες ή τον χειρισμό της δομής των ιστοσελίδων πριν από την εμφάνισή τους στους χρήστες.

Το Go παρέχει πακέτα για εργασία με έγγραφα, συμπεριλαμβανομένων των μορφών HTML και XML που χρησιμοποιούνται ευρέως σε ιστοσελίδες. ο html Το πακέτο παρέχει λειτουργίες για διακριτική και ανάλυση HTML.

Το πακέτο HTML

ο html Το πακέτο παρέχει ένα tokenizer και αναλυτή συμβατό με HTML5 για την ανάλυση και το χειρισμό εγγράφων HTML, τη διέλευση του δέντρου ανάλυσης και τον χειρισμό της δομής δέντρου. ο

instagram viewer
html Το πακέτο είναι ένα ενσωματωμένο πακέτο της τυπικής βιβλιοθήκης της Go.

Ένα από τα κύρια χαρακτηριστικά του html πακέτο είναι το Αναλύω λέξη συνάρτηση που μπορεί να αναλύσει έγγραφα HTML και να επιστρέψει τον ριζικό κόμβο του δέντρου ανάλυσης, από όπου μπορείτε να χρησιμοποιήσετε συναρτήσεις όπως το Πρώτο παιδί και Επόμενος αδελφός για πλοήγηση στο δέντρο και εξαγωγή πληροφοριών από το έγγραφο. Το πακέτο παρέχει επίσης το ParseFragment λειτουργία για την ανάλυση θραυσμάτων εγγράφων HTML.

ο EscapeString Η λειτουργία είναι εύχρηστη για τη διαφυγή ειδικών χαρακτήρων σε συμβολοσειρές για ασφαλέστερη συμπερίληψη σε HTML. μπορείτε να χρησιμοποιήσετε αυτή τη λειτουργία για να αποτρέψετε δέσμες ενεργειών μεταξύ τοποθεσιών (XSS) επιθέσεις μετατρέποντας ειδικούς χαρακτήρες στις αντίστοιχες οντότητες HTML τους.

Για να ξεκινήσετε με το html πακέτο, μπορείτε να εισαγάγετε το πακέτο στα αρχεία του έργου Go.

εισαγωγή"golang.org/x/net/html"

ο html Το πακέτο δεν παρέχει λειτουργίες για τη δημιουργία HTML. Αντίθετα, μπορείτε να χρησιμοποιήσετε το πακέτο html/template, το οποίο προσφέρει ένα σύνολο λειτουργιών για τη δημιουργία προτύπων HTML. ο html/πρότυπο Το πακέτο παρέχει μια λειτουργία πρότυπο. HTMLEscape για τη σύνταξη εκδόσεων HTML με διαφυγή σε ένα πρόγραμμα εγγραφής απαντήσεων.

ο html/πρότυπο Το πακέτο είναι επίσης μέρος της τυπικής βιβλιοθήκης και δείτε πώς μπορείτε να εισαγάγετε το πακέτο.

εισαγωγή"html/πρότυπο"

ο html Το πακέτο είναι το πιο ευρέως χρησιμοποιούμενο πακέτο προτύπων στο οικοσύστημα Go και υποστηρίζει διάφορες λειτουργίες και τύπους δεδομένων.

Ανάλυση HTML στο Go

ο Αναλύω λέξη λειτουργία του html Το πακέτο βοηθά με την ανάλυση κειμένου και εγγράφων HTML. ο Αναλύω λέξη συνάρτηση παίρνει σε ένα io. Αναγνώστης για παράδειγμα, καθώς είναι ένα πρώτο όρισμα που περιέχει το έγγραφο αρχείου και ένα *html. Κόμβος παράδειγμα, που είναι ο ριζικός κόμβος του εγγράφου HTML

Δείτε πώς μπορείτε να χρησιμοποιήσετε το Αναλύω λέξη λειτουργία για την ανάλυση μιας ιστοσελίδας και την επιστροφή όλων των διευθύνσεων URL στην ιστοσελίδα.

εισαγωγή (
"fmt"
"golang.org/x/net/html"
"net/http"
)

funcκύριος() {
// Στείλτε ένα αίτημα HTTP GET στην ιστοσελίδα example.com
resp, err := http. Παίρνω(" https://www.example.com")
αν λάθος!= μηδέν {
fmt. Println("Λάθος:", λάθος)
ΕΠΙΣΤΡΟΦΗ
}
αναβάλλω αντιστ. Σώμα. Κλείσε()

// Χρησιμοποιήστε το πακέτο html για να αναλύσετε το σώμα απόκρισης από το αίτημα
doc, err := html. Ανάλυση (αντ. Σώμα)
αν λάθος!= μηδέν {
fmt. Println("Λάθος:", λάθος)
ΕΠΙΣΤΡΟΦΗ
}


// Βρείτε και εκτυπώστε όλους τους συνδέσμους στην ιστοσελίδα
var συνδέσεις []σειρά
var Σύνδεσμος func(*html. Κόμβος)
σύνδεσμος = func(n *html. Κόμβος) {
αν n. Πληκτρολογήστε == html. ElementNode && n. Δεδομένα == "ένα" {
Για _, α := εύρος n. Attr {
αν ένα. Κλειδί == "href" {
// προσθέτει μια νέα καταχώρηση συνδέσμου όταν ταιριάζει το χαρακτηριστικό
σύνδεσμοι = προσαρτώ(σύνδεσμοι, α. Val)
}
}
}

// διασχίζει το HTML της ιστοσελίδας από τον πρώτο θυγατρικό κόμβο
Για c := n. Πρώτο παιδί; γ != μηδέν; c = c. Επόμενο Αδερφάκι {
σύνδεσμος (γ)
}
}
σύνδεσμος (έγγραφο)

// κάνει βρόχους μέσω του τμήματος συνδέσμων
Για _, l := εύρος συνδέσεις {
fmt. Println("Σύνδεσμος:", λ)
}
}

ο κύριος Η λειτουργία στέλνει ένα αίτημα HTTP GET στον ιστότοπο με το Παίρνω λειτουργία του http πακέτο και ανακτά το σώμα απόκρισης της σελίδας. ο Αναλύω λέξη λειτουργία του html Το πακέτο αναλύει το σώμα απόκρισης και επιστρέφει το έγγραφο HTML.

ο συνδέσεις μεταβλητή είναι το κομμάτι των συμβολοσειρών που θα συγκρατούν τις διευθύνσεις URL από την ιστοσελίδα. ο Σύνδεσμος η συνάρτηση λαμβάνει την αναφορά του δείκτη στο Κόμβος μέθοδος για την html πακέτο, και το Κλειδί Η μέθοδος του στιγμιότυπου χαρακτηριστικού από τον κόμβο επιστρέφει δεδομένα που περιέχονται σε ένα καθορισμένο χαρακτηριστικό (σε αυτήν την περίπτωση, href). Η συνάρτηση διασχίζει το έγγραφο με το Επόμενος αδελφός μέθοδος από το Πρώτο παιδί κόμβος για την εκτύπωση κάθε διεύθυνσης URL στην ιστοσελίδα. Τέλος, ο βρόχος for εκτυπώνει όλες τις διευθύνσεις URL από το συνδέσεις φέτα.

Εδώ είναι το αποτέλεσμα της επέμβασης.

Δημιουργία HTML στο Go

ο html/πρότυπο Το πακέτο παρέχει ένα σύνολο λειτουργιών για την ασφαλή και αποτελεσματική ανάλυση και εκτέλεση προτύπων HTML. Η συσκευασία έχει σχεδιαστεί για χρήση σε συνδυασμό με το html πακέτο, το οποίο παρέχει λειτουργίες ανάλυσης και χειρισμού HTML.

Μπορείτε να δημιουργήσετε HTML για απόδοση από την πλευρά του διακομιστή με το html/πρότυπο πακέτο. Η δημιουργία HTML είναι χρήσιμη για πολλές περιπτώσεις χρήσης, όπως η αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου, η απόδοση από την πλευρά του διακομιστή και πολλά άλλα. Μπορείτε να χρησιμοποιήσετε ενσωματωμένους τύπους δεδομένων Go, όπως χάρτες και δομές, για να αλληλεπιδράσετε και να χειριστείτε το HTML της ιστοσελίδας σας.

Θα χρειαστεί να καταλάβετε Μετάβαση σε σύνταξη προτύπων HTML για να δημιουργήσετε με επιτυχία HTML με το html/πρότυπο πακέτο.

εισαγωγή (
"html/πρότυπο"
"os"
)

τύπος ιστοσελίδα struct {
Τίτλος σειρά
Επικεφαλίδα σειρά
Κείμενο σειρά
}

funcκύριος() {
// Ορίστε το πρότυπο
tmpl := `



{{.Τίτλος}}


{{.Επικεφαλίδα}}


{{.Κείμενο}}



`

// Καθορίστε τα δεδομένα που θα χρησιμοποιηθούν στο πρότυπο
web := ιστοσελίδα{
Τίτλος: "Μια Παράδειγμα Σελίδα",
Επικεφαλίδα: "Καλώς ήρθατε στον ιστότοπό μου!",
Κείμενο: "Αυτή είναι η αρχική σελίδα του ιστότοπού μου.",
}

// Δημιουργήστε ένα νέο πρότυπο και αναλύστε τη συμβολοσειρά του προτύπου
t, err := πρότυπο. Νέος("ιστοσελίδα").Ανάλυση (tmpl)
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

// Εκτελέστε το πρότυπο και γράψτε το αποτέλεσμα στο stdout
err = t. Εκτέλεση (os. Stdout, web )
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
}

ο tmpl μεταβλητή κρατά τη συμβολοσειρά HTML. Η συμβολοσειρά HTML χρησιμοποιεί σύνταξη προτύπου Go για να ορίσει τον τίτλο της σελίδας, an h1 κεφαλίδα και μια παράγραφο κειμένου. ο ιστοσελίδα Το struct ορίζει τα πεδία δεδομένων για την ιστοσελίδα με το Τίτλος, Επικεφαλίδα, και Κείμενο χωράφια.

ο Αναλύω λέξη μέθοδος του Νέος η λειτουργία του πακέτου προτύπου δημιουργεί και αναλύει ένα νέο πρότυπο με τη συμβολοσειρά προτύπου. ο Εκτέλεση Η συνάρτηση της νέας παρουσίας προτύπου εκτελεί το πρότυπο με τα δεδομένα από την παρουσία της δομής σας και επιστρέφει το αποτέλεσμα στην τυπική έξοδο (σε αυτήν την περίπτωση, εκτυπώνει το αποτέλεσμα στην κονσόλα).

Δημιουργήστε εφαρμογές Ιστού με το Go

Η εκμάθηση σχετικά με την ανάλυση και τη δημιουργία HTML με το Go είναι ένα βήμα προς τη σωστή κατεύθυνση προς τη δημιουργία πιο εξελιγμένων εφαρμογών ιστού με το Go. Μπορείτε να χρησιμοποιήσετε πλαίσια όπως το Gin και το Echo και δρομολογητές όπως το Gorilla Mux και το Chi Router για να δημιουργήσετε την πλευρά διακομιστή του ιστού σας εφαρμογή.

Αυτά τα πακέτα είναι χτισμένα πάνω στο net/http πακέτο (το ενσωματωμένο πακέτο για την αλληλεπίδραση με το HTTP in Go) και αφηρημένα την πολυπλοκότητα της εγκατάστασης διακομιστών και δρομολογητών στο Go.