Maison >développement back-end >Golang >Comment supprimer le HTML dans Golang

Comment supprimer le HTML dans Golang

PHPz
PHPzoriginal
2023-04-27 09:08:051100parcourir

Go pratique des langues : Comment supprimer les balises HTML ?

Dans le développement web, nous devons souvent supprimer les balises HTML pour obtenir du contenu en texte brut, comme l'analyse et le traitement des commentaires, des articles, etc. Pour répondre à cette exigence, le langage Go propose diverses méthodes, et cet article vous en présentera plusieurs.

Méthode 1 : Utiliser le remplacement de chaîne

Le langage Go fournit le package de chaînes pour faire fonctionner les chaînes. Nous pouvons utiliser la méthode strings.ReplaceAll() pour remplacer les balises HTML par des caractères d'espacement afin d'obtenir du contenu en texte brut. Le code d'implémentation spécifique est le suivant :

package main

import (
    "fmt"
    "strings"
)

func main() {
    html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>"

    // 使用 strings.ReplaceAll() 将 HTML 标签替换为空白字符
    text := strings.ReplaceAll(html, "<", " <")
    text = strings.ReplaceAll(text, ">", "> ")
    text = strings.TrimSpace(strings.Join(strings.Fields(text), " "))

    fmt.Println(text)
}

Dans le code ci-dessus, nous utilisons d'abord la méthode strings.ReplaceAll() pour remplacer tous les crochets angulaires gauches ("<") par des espaces + crochets angulaires gauches , et remplacez tous les crochets à angle droit. Les crochets (">") sont remplacés par des crochets à angle droit + des espaces, c'est-à-dire qu'un espace est ajouté entre l'étiquette et le texte pour faciliter l'utilisation ultérieure de la méthode strings.Fields() pour diviser la chaîne en plusieurs sous-chaînes. Ensuite, nous utilisons la méthode strings.Fields() pour diviser la chaîne en plusieurs sous-chaînes, puis utilisons strings.Join() pour connecter ces sous-chaînes avec des caractères d'espacement, et enfin utilisons la méthode strings.TrimSpace() pour supprimer les chaînes aux deux niveaux. se termine. Caractères d’espacement blancs pour obtenir le contenu final en texte brut.

Exécutez le code ci-dessus, le résultat est le suivant :

Test Page Hello, Go!

Le code ci-dessus est simple à implémenter, mais il y a les problèmes suivants :

#🎜🎜 #
    Si HTML La balise contient des attributs, tels que
  1. Google Nous devons ajouter des caractères vides entre les crochets gauche et droit, sinon le texte du lien "Google" dans la chaîne remplacée sera. être étroitement connecté aux crochets gauche et droit, ce qui rend les résultats difficiles à lire.
  2. Si la balise HTML contient trop de contenu, tel que JavaScript, CSS, etc., la vitesse de remplacement sera plus lente.
Compte tenu de ces problématiques, nous pouvons utiliser la deuxième méthode.

Méthode 2 : Utiliser la bibliothèque Goquery

Goquery est une bibliothèque d'analyse et de manipulation HTML dans le langage Go, fournissant une API pratique et flexible. Nous pouvons utiliser la bibliothèque Goquery pour analyser le HTML et filtrer les nœuds de texte afin d'obtenir du contenu en texte brut. Le code d'implémentation spécifique est le suivant :

package main

import (
    "fmt"
    "strings"

    "github.com/PuerkitoBio/goquery"
)

func main() {
    html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>"
    doc, _ := goquery.NewDocumentFromReader(strings.NewReader(html))

    // 筛选文本节点
    var text string
    doc.Find(":not(script):not(style)").Each(func(_ int, sel *goquery.Selection) {
        if sel.Children().Length() == 0 {
            text += sel.Text() + " "
        }
    })

    fmt.Println(strings.TrimSpace(text))
}
Dans le code ci-dessus, nous utilisons la méthode goquery.NewDocumentFromReader() pour convertir le HTML en un objet goquery.Document. Ensuite, nous utilisons la méthode doc.Find() pour sélectionner tous les nœuds à l'exception des balises de script et de style, et utilisons la méthode sel.Children().Length() pour déterminer si le nœud actuel est un nœud de texte. Si tel est le cas, ajoutez-le. contenu à la variable texte. Enfin, utilisez la méthode strings.TrimSpace() pour supprimer les caractères vides aux deux extrémités de la chaîne afin d'obtenir le contenu final en texte brut.

Exécutez le code ci-dessus, le résultat est le suivant :

Test Page Hello, Go!
L'utilisation de la bibliothèque Goquery peut gérer différents formats de balises et le code est plus facile à lire et à maintenir.

Cet article présente deux méthodes pour supprimer les balises HTML, parmi lesquelles les expressions régulières sont également couramment utilisées. Dans les applications pratiques, nous pouvons choisir la méthode la plus adaptée à des situations spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn