Разборът е анализиране и интерпретиране на структурата на документ. Процесът на анализиране може да включва извличане на конкретни елементи, атрибути или данни от документа и проверка дали документът е добре форматиран, като същевременно следва специфични стандарти или правила. Парсирането се използва главно за извличане на данни от уеб страници или манипулиране на структурата на уеб страниците, преди да бъдат показани на потребителите.
Go предоставя пакети за работа с документи, включително HTML и XML форматите, широко използвани в уеб страниците. The html пакетът предоставя функции за токенизиране и анализиране на HTML.
HTML пакетът
The html пакетът предоставя съвместим с HTML5 токенизатор и анализатор за анализиране и манипулиране на HTML документи, преминаване през дървото за анализиране и манипулиране на дървовидната структура. The html package е вграден пакет от стандартната библиотека на Go.
Една от основните характеристики на html пакетът е Анализирайте функция, която може да анализира HTML документи и да върне основния възел на дървото за анализ, откъдето можете да използвате функции като Първо дете и NextSibling за навигация в дървото и извличане на информация от документа. Пакетът също така предоставя ParseFragment функция за анализиране на фрагменти от HTML документи.
The EscapeString функцията е удобна за екраниране на специални символи в низове за по-безопасно включване в HTML; можете да използвате тази функция за предотвратяване междусайтов скрипт (XSS) атаки чрез преобразуване на специални знаци в съответните им HTML обекти.
За да започнете с html пакет, можете да импортирате пакета във вашите файлове на проекта Go.
импортиране"golang.org/x/net/html"
The html пакетът не предоставя никакви функции за генериране на HTML. Вместо това можете да използвате пакета html/template, който предлага набор от функции за генериране на HTML шаблони. The html/шаблон пакетът предоставя функция шаблон. HTMLEscape за писане на екранирани версии на HTML към писател на отговор.
The html/шаблон пакет също е част от стандартната библиотека и ето как можете да импортирате пакета.
импортиране"html/шаблон"
The html package е най-популярният пакет за шаблони в екосистемата Go и поддържа различни операции и типове данни.
Разбор на HTML в Go
The Анализирайте функция на html пакетът помага при анализиране на HTML текст и документи. The Анализирайте функция приема ан io. Читател екземпляр, тъй като е първи аргумент, съдържащ файловия документ и *html. Възел екземпляр, който е основният възел на HTML документа
Ето как можете да използвате Анализирайте функция за анализиране на уеб страница и връщане на всички URL адреси на уеб страницата.
импортиране (
"fmt"
"golang.org/x/net/html"
"net/http"
)функосновен() {
// Изпратете HTTP GET заявка към уеб страницата example.com
респ. грешка := http. Вземете (" https://www.example.com")
ако грешка!= нула {
fmt. Println("Грешка:", грешка)
връщане
}
отлагам респ. Тяло. Близо()// Използвайте html пакета, за да анализирате тялото на отговора от заявката
doc, грешка := html. Анализирайте (респ. тяло)
ако грешка!= нула {
fmt. Println("Грешка:", грешка)
връщане
}
// Намерете и отпечатайте всички връзки на уеб страницата
вар връзки []низ
вар връзка функ(*html. възел)
връзка = функ(n *html. възел) {
ако н. Въведете == html. ElementNode && n. Данни == "а" {
за _, a := диапазон н. Attr {
ако а. Ключ == "href" {
// добавя нов запис за връзка, когато атрибутът съвпада
връзки = добавям(връзки, a. Вал)
}
}
}// преминава през HTML на уеб страницата от първия дъщерен възел
за c := n. Първо дете; c != нула; c = c. NextSibling {
връзка (c)
}
}
връзка (doc)
// преминава през среза на връзките
за _, l := диапазон връзки {
fmt. Println("Връзка:", л)
}
}
The основен функцията изпраща HTTP GET заявка до уебсайта с Вземете функция на http пакетира и извлича тялото на отговора на страницата. The Анализирайте функция на html package анализира тялото на отговора и връща HTML документа.
The връзки променливата е част от низове, които ще съдържат URL адресите от уеб страницата. The връзка функцията приема препратката на указателя към Възел метод за html пакет и Ключ метод на екземпляра на атрибута от възела връща данни, съдържащи се в определен атрибут (в този случай, href). Функцията преминава през документа с NextSibling метод от Първо дете възел за отпечатване на всеки URL адрес на уеб страницата. И накрая, цикълът for отпечатва всички URL адреси от връзки парче.
Ето резултата от операцията.
Генериране на HTML в Go
The html/шаблон предоставя набор от функции за безопасно и ефективно анализиране и изпълнение на HTML шаблони. Пакетът е предназначен за използване във връзка с html пакет, който предоставя функции за анализиране и манипулиране на HTML.
Можете да генерирате HTML за изобразяване от страна на сървъра с html/шаблон пакет. Генерирането на HTML е удобно за много случаи на употреба, като изпращане на имейли, изобразяване на интерфейс от страна на сървъра и много други. Можете да използвате вградени типове данни Go като карти и структури, за да взаимодействате и манипулирате HTML кода на вашата уеб страница.
Ще трябва да разберете Синтаксис за шаблони на Go HTML за успешно генериране на HTML с html/шаблон пакет.
импортиране (
"html/шаблон"
"операционна система"
)Тип уеб страница структура {
Заглавие низ
Заглавие низ
Текст низ
}функосновен() {
// Дефиниране на шаблона
tmpl := `{{.Заглавие}} {{.Заглавие}}
{{.Текст}}
`// Дефиниране на данните, които да се използват в шаблона
уеб := уебстраница{
Заглавие: „Примерна страница“,
Заглавие: „Добре дошли в моя уебсайт!“,
Текст: „Това е началната страница на моя уебсайт.“,
}// Създайте нов шаблон и анализирайте низа на шаблона
t, err := шаблон. Ново("уеб страница").Разбор (tmpl)
ако грешка!= нула {
паника(грешка)
}
// Изпълнете шаблона и запишете резултата в stdout
грешка = t. Изпълнете (ос. Стандартен изход, мрежа )
ако грешка!= нула {
паника(грешка)
}
}
The tmpl променливата съдържа HTML низа. HTML низът използва синтаксис за шаблони на Go, за да дефинира заглавието на страницата, an h1 заглавка и абзац от текста. The уеб страница struct дефинира полетата с данни за уеб страницата с Заглавие, Заглавие, и Текст полета.
The Анализирайте метод на Нов функцията на шаблонния пакет създава и анализира нов шаблон с шаблонния низ. The Изпълни функцията на новия екземпляр на шаблон изпълнява шаблона с данните от вашия екземпляр на структура и връща резултата към стандартния изход (в този случай той отпечатва резултата на конзолата).
Създавайте уеб приложения с Go
Научаването за анализиране и генериране на HTML с Go е една стъпка в правилната посока към изграждането на по-сложни уеб приложения с Go. Можете да използвате рамки като Gin и Echo и рутери като Gorilla Mux и Chi Router, за да изградите сървърната страна на вашия уеб приложение.
Тези пакети са изградени върху net/http пакет (вграденият пакет за взаимодействие с HTTP в Go) и абстрахирайте сложността на настройването на сървъри и рутери в Go.