Синтаксический анализ — это анализ и интерпретация структуры документа. Процесс синтаксического анализа может включать в себя извлечение определенных элементов, атрибутов или данных из документа и проверку правильности форматирования документа при соблюдении определенных стандартов или правил. Синтаксический анализ в основном используется для извлечения данных с веб-страниц или управления структурой веб-страниц перед их отображением пользователям.
Go предоставляет пакеты для работы с документами, включая форматы HTML и XML, широко используемые на веб-страницах. HTML package предоставляет функции для токенизации и анализа HTML.
HTML-пакет
HTML Пакет предоставляет совместимый с HTML5 токенизатор и синтаксический анализатор для синтаксического анализа и манипулирования HTML-документами, обхода дерева синтаксического анализа и управления древовидной структурой. HTML package — это встроенный пакет стандартной библиотеки Go.
Одной из главных особенностей 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.