ホームページ  >  記事  >  バックエンド開発  >  golangでhtmlを削除する方法

golangでhtmlを削除する方法

PHPz
PHPzオリジナル
2023-04-27 09:08:051022ブラウズ

Go 言語の練習: HTML タグを削除するには?

Web 開発では、コメントや記事などの分析や処理など、プレーン テキスト コンテンツを取得するために HTML タグを削除する必要があることがよくあります。この要件に対応するために、Go 言語にはさまざまなメソッドが用意されており、この記事ではそのうちのいくつかを紹介します。

方法 1: 文字列置換を使用する

Go 言語には、文字列を操作するための strings パッケージが用意されています。 strings.ReplaceAll() メソッドを使用して、HTML タグを空白文字に置き換えて、プレーン テキスト コンテンツを取得できます。具体的な実装コードは次のとおりです。

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)
}

上記のコードでは、最初に strings.ReplaceAll() メソッドを使用して、すべての左山括弧 ("<") をスペース左山括弧に置き換えます。すべての直角括弧 (" >") は直角括弧スペースに置き換えられます。つまり、文字列を複数に分割するための string.Fields() メソッドのその後の使用を容易にするために、ラベルとテキストの間にスペースが追加されます。部分文字列。次に、strings.Fields() メソッドを使用して文字列を複数の部分文字列に分割し、次に strings.Join() を使用してこれらの部分文字列を空白文字で接続し、最後に strings.TrimSpace() メソッドを使用して両方の部分文字列を削除します。最終的なプレーンテキストコンテンツを取得するための空白文字。

上記のコードを実行すると、出力は次のようになります:

Test Page Hello, Go!

上記のコードは実装が簡単ですが、いくつかの問題があります:

  1. If the HTMLタグには Google などの属性が含まれています。左と右の山括弧の間に空白文字を追加する必要があります。そうしないと、置換された文字列内のリンク テキスト「Google」が左と右の山括弧と密接に結合してしまいます。結果が読みにくくなります。
  2. HTML タグに JavaScript や CSS などの内容が多すぎると、置換速度が遅くなります。

これらの問題を考慮すると、2 番目の方法を使用できます。

方法 2: Goquery ライブラリを使用する

Goquery は Go 言語の HTML 解析および操作ライブラリであり、便利で柔軟な API を提供します。 Goquery ライブラリを使用して HTML を解析し、テキスト ノードをフィルタリングしてプレーン テキスト コンテンツを取得できます。具体的な実装コードは次のとおりです。

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))
}

上記のコードでは、 goquery.NewDocumentFromReader() メソッドを使用して HTML を goquery.Document オブジェクトに変換します。次に、doc.Find() メソッドを使用して script タグと style タグを除くすべてのノードを選択し、sel.Children().Length() メソッドを使用して現在のノードがテキスト ノードかどうかを判断します。コンテンツをテキスト変数に渡します。最後に、strings.TrimSpace() メソッドを使用して文字列の両端の空白文字を削除し、最終的なプレーン テキスト コンテンツを取得します。

上記のコードを実行すると、出力は次のようになります。

Test Page Hello, Go!

Goquery ライブラリを使用すると、さまざまなタグ形式を処理でき、コードの読み取りと保守が容易になります。

この記事では、HTML タグを削除する 2 つの方法を紹介します。これらの方法では、正規表現もよく使用されます。実際のアプリケーションでは、特定の状況に最適な方法を選択できます。

以上がgolangでhtmlを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。