Heim >Backend-Entwicklung >Golang >So schreiben Sie verstümmelten Crawler-Code in Golang

So schreiben Sie verstümmelten Crawler-Code in Golang

angryTom
angryTomOriginal
2020-02-15 09:52:403460Durchsuche

So schreiben Sie verstümmelten Crawler-Code in Golang

Was soll ich tun, wenn ich einen Crawler mit verstümmeltem Code in Golang schreibe?

Wenn ich ein Crawler-Programm in Golang schreibe, werden Sie auf Folgendes stoßen eine Seite mit dem Kodierungsformat gb2312.

Aus der Webseite ist ersichtlich, dass die Zeichenkodierung der Seite gb2312

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

ist und Golang standardmäßig das Kodierungsformat UTF-8 unterstützt Das Ergebnis des direkten Kletterns sind verstümmelte Zeichen.

Lösung:

Verwenden Sie dieses Paket, um die Codierungskonvertierung abzuschließen,

1. Führen Sie go get aus github.com/axgle/mahonia Nach dem Befehl zum Herunterladen dieses Pakets wird

github.com\axgle\mahonia
im Verzeichnis

%gopath%/src

erstellt. 2. So verwenden Sie den Code

1) Paket importieren

import "github.com/axgle/mahonia"

2) Konvertierungsfunktion

func ConvertToString(src string, srcCode string, tagCode string) string {
    srcCoder := mahonia.NewDecoder(srcCode)
    srcResult := srcCoder.ConvertString(src)
    tagCoder := mahonia.NewDecoder(tagCode)
    _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
    result := string(cdata)
    return result
}

3) Rufen Sie diese Funktion auf, wenn eine String-Konvertierungskodierung erforderlich ist

result = ConvertToString(html, "gbk", "utf-8")

Weitere Informationen Golang-Kenntnisse, bitte folgen Sie der Spalte Golang-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonSo schreiben Sie verstümmelten Crawler-Code in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn