Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Синтаксический анализ — это анализ и интерпретация структуры документа. Процесс синтаксического анализа может включать в себя извлечение определенных элементов, атрибутов или данных из документа и проверку правильности форматирования документа при соблюдении определенных стандартов или правил. Синтаксический анализ в основном используется для извлечения данных с веб-страниц или управления структурой веб-страниц перед их отображением пользователям.

Go предоставляет пакеты для работы с документами, включая форматы HTML и XML, широко используемые на веб-страницах. HTML package предоставляет функции для токенизации и анализа HTML.

HTML-пакет

HTML Пакет предоставляет совместимый с HTML5 токенизатор и синтаксический анализатор для синтаксического анализа и манипулирования HTML-документами, обхода дерева синтаксического анализа и управления древовидной структурой. HTML package — это встроенный пакет стандартной библиотеки Go.

instagram viewer

Одной из главных особенностей HTML пакет это Разобрать функция, которая может анализировать HTML-документы и возвращать корневой узел дерева разбора, откуда вы можете использовать такие функции, как Первый ребенок и СледующийРодной брат для навигации по дереву и извлечения информации из документа. Пакет также предоставляет ParseFragment функция разбора фрагментов HTML-документов.

EscapeString функция удобна для экранирования специальных символов в строках для более безопасного включения в HTML; вы можете использовать эту функцию, чтобы предотвратить межсайтовый скриптинг (XSS) атаки путем преобразования специальных символов в соответствующие им объекты HTML.

Чтобы начать работу с HTML package, вы можете импортировать пакет в файлы проекта Go.

Импортировать"golang.org/x/net/html"

HTML package не предоставляет никаких функций для генерации HTML. Вместо этого вы можете использовать пакет html/template, который предлагает набор функций для создания HTML-шаблонов. html/шаблон пакет предоставляет функцию шаблон. HTMLEscape для написания экранированных версий HTML автору ответа.

html/шаблон package также является частью стандартной библиотеки, и вот как вы можете импортировать пакет.

Импортировать"html/шаблон"

HTML package — наиболее популярный пакет шаблонов в экосистеме Go, который поддерживает различные операции и типы данных.

Разбор HTML в Go

Разобрать функция HTML package помогает анализировать HTML-текст и документы. Разобрать функция принимает в ио. Читатель instance, так как это первый аргумент, содержащий файловый документ и *HTML. Узел экземпляр, который является корневым узлом документа HTML

Вот как вы можете использовать Разобрать функция для анализа веб-страницы и возврата всех URL-адресов на веб-странице.

Импортировать (
"ФМТ"
"golang.org/x/net/html"
"сеть/http"
)

функцияосновной() {
// Отправляем запрос HTTP GET на веб-страницу example.com
соответственно, ошибка := http. Получать(" https://www.example.com")
если ошибся != ноль {
ФМТ. Распечатать("Ошибка:", ошибся)
возвращаться
}
отложить соотв. Тело. Закрывать()

// Используйте пакет html для разбора тела ответа из запроса
документ, ошибка := html. Разобрать (отв. Тело)
если ошибся != ноль {
ФМТ. Распечатать("Ошибка:", ошибся)
возвращаться
}


// Находим и печатаем все ссылки на веб-странице
вар ссылки []нить
вар связь функция(*html. Узел)
ссылка = функция(n*html. Узел) {
если н. Введите == HTML. ЭлементУзел && n. Данные == "а" {
для _, а := диапазон н. Атрибут {
если а. Ключ == "ссылка" {
// добавляет новую запись ссылки, когда атрибут совпадает
ссылки = добавить(ссылки, а. Вал)
}
}
}

// проходит HTML-код веб-страницы от первого дочернего узла
для с := п. Первый ребенок; с != ноль; с = с. СледующийРодной брат {
ссылка (с)
}
}
ссылка (док)

// перебирает срез ссылок
для _, л := диапазон ссылки {
ФМТ. Распечатать("Связь:", л)
}
}

основной функция отправляет HTTP-запрос GET на веб-сайт с Получать функция http package и извлекает тело ответа страницы. Разобрать функция HTML package анализирует тело ответа и возвращает HTML-документ.

ссылки переменная — это фрагмент строк, который будет содержать URL-адреса веб-страницы. связь функция принимает ссылку указателя на Узел метод для HTML пакет, и Ключ метод экземпляра атрибута из узла возвращает данные, содержащиеся в указанном атрибуте (в данном случае, href). Функция просматривает документ с СледующийРодной брат метод из Первый ребенок node для печати каждого URL-адреса на веб-странице. Наконец, цикл for выводит все URL-адреса из ссылки кусочек.

Вот результат операции.

Генерация HTML в Go

html/шаблон Пакет предоставляет набор функций для безопасного и эффективного разбора и выполнения HTML-шаблонов. Пакет предназначен для использования совместно с HTML пакет, который предоставляет функции для анализа и управления HTML.

Вы можете сгенерировать HTML для рендеринга на стороне сервера с помощью html/шаблон упаковка. Генерация HTML удобна для многих случаев использования, таких как отправка электронных писем, рендеринг веб-интерфейса на стороне сервера и многое другое. Вы можете использовать встроенные типы данных Go, такие как карты и структуры, для взаимодействия и управления HTML-кодом вашей веб-страницы.

Вам нужно понять Синтаксис шаблонов Go HTML для успешного создания HTML с помощью html/шаблон упаковка.

Импортировать (
"html/шаблон"
"Операционные системы"
)

тип веб-страница структура {
Заголовок нить
Заголовок нить
Текст нить
}

функцияосновной() {
// Определяем шаблон
тмпл := `



{{.Заголовок}}


{{.Заголовок}}


{{.Текст}}



`

// Определяем данные, которые будут использоваться в шаблоне
веб := веб-страница{
Заголовок: «Пример страницы»,
Заголовок: "Добро пожаловать на мой сайт!",
Текст: «Это домашняя страница моего сайта».,
}

// Создаем новый шаблон и анализируем строку шаблона
т, ошибка := шаблон. Новый("веб-страница").Разобрать (тмпл)
если ошибся != ноль {
паника(ошибка)
}

// Выполняем шаблон и записываем результат в stdout
ошибаться = т. Казнить (ос. стандартный вывод, веб)
если ошибся != ноль {
паника(ошибка)
}
}

тмпл переменная содержит строку HTML. Строка HTML использует синтаксис шаблонов Go для определения заголовка страницы, h1 заголовок и абзац текста. веб-страница struct определяет поля данных для веб-страницы с Заголовок, Заголовок, и Текст поля.

Разобрать метод Новый Функция пакета шаблонов создает и анализирует новый шаблон со строкой шаблона. Выполнять Функция нового экземпляра шаблона выполняет шаблон с данными из экземпляра вашей структуры и возвращает результат на стандартный вывод (в данном случае он выводит результат на консоль).

Создавайте веб-приложения с помощью Go

Изучение синтаксического анализа и генерации HTML с помощью Go — это еще один шаг в правильном направлении к созданию более сложных веб-приложений. с Го. Вы можете использовать такие фреймворки, как Gin и Echo, и маршрутизаторы, такие как Gorilla Mux и Chi Router, для создания серверной части вашей сети. приложение.

Эти пакеты построены на сеть/http package (встроенный пакет для взаимодействия с HTTP в Go) и абстрагироваться от сложности настройки серверов и маршрутизаторов в Go.