Научная статья на тему 'ПРОБЛЕМЫ СИНТАКСИЧЕСКОГО АНАЛИЗА HTML-ДОКУМЕНТОВ'

ПРОБЛЕМЫ СИНТАКСИЧЕСКОГО АНАЛИЗА HTML-ДОКУМЕНТОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
64
7
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
HTML / СИНТАКСИЧЕСКИЙ АНАЛИЗ / СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР / БРАУЗЕР / SYNTAX ANALYSIS / PARSER / BROWSER

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Поляк Г.Л.

В данной статье рассмотрены некоторые проблемы, с которыми может столкнуться разработчик при реализации синтаксического анализатора для HTML-документов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

MAIN CHALLENGES OF PARSING HTML DOCUMENTS

This article discusses some of the problems that a developer may encounter when implementing a parser for HTML documents.

Текст научной работы на тему «ПРОБЛЕМЫ СИНТАКСИЧЕСКОГО АНАЛИЗА HTML-ДОКУМЕНТОВ»

УДК 004.622

Поляк Г.Л.

студент 2 курса магистратуры Санкт-Петербургский горный университет Россия, г. Санкт-Петербург ПРОБЛЕМЫ СИНТАКСИЧЕСКОГО АНАЛИЗА HTML-ДОКУМЕНТОВ

Аннотация: В данной статье рассмотрены некоторые проблемы, с которыми может столкнуться разработчик при реализации синтаксического анализатора для HTML-документов.

Ключевые слова: html, синтаксический анализ, синтаксический анализатор, браузер.

Poliak G.L.

2nd year master student Saint-Petersburg Mining University Russia, Saint Petersburg MAIN CHALLENGES OF PARSING HTML DOCUMENTS

Abstract: This article discusses some of the problems that a developer may encounter when implementing a parser for HTML documents.

Keywords: html, syntax analysis, parser, browser.

В области разработки программного обеспечения перед специалистами часто возникает задача разбора HTML-документов, будь то извлечение некоторого фрагмента текста или обработка целого документа. Существует большое количество готовых решений от различных производителей программного обеспечения, как коммерческих, так и свободно распространяемых, написанных на разных языках программирования для различных платформ [1]. Однако, зачастую программисты вынуждены отказываться от использования сторонних библиотек из-за различных причин. Например, разрабатываемое приложение может использовать лишь небольшую часть функциональности, тогда как ресурсы для использования библиотеки будут выделяться в полном объеме. Кроме того, нередка ситуация, когда возможностей сторонней библиотеки, наоборот, не хватает для выполнения поставленных перед разработчиком задач. В этом случае программист вынужден реализовать необходимые компоненты самостоятельно.

Основные проблемы синтаксического разбора HTML разметки связаны с так называемым «нестрогим» синтаксисом. В связи с ростом популярности как web сегмента разработки, так всего Интернета в целом, браузерам приходилось подстраиваться скорее под пользователей и разработчиков, чем под стандарт языка. Таким образом, несмотря на существование формального описания языка HTML, где есть четкие правила написания тех или иных фрагментов разметки, современные браузеры постараются исправить ошибки разработчика, нежели выведут сообщение об ошибке (по смыслу схожую с

ошибкой компиляции в языках программирования) вместо запрашиваемой страницы.

Ниже рассмотрены некоторые распространенные ошибки, которые должен уметь обрабатывать синтаксический анализатор.

Одной из самых распространённых ошибок является ситуация, когда границы двух тегов перепутаны местами. На рисунке 1 представлен фрагмент кода HTML-документа с ошибкой:_

<body>

<div>BnoK текста с <b>oiuH6KofiVdiv>Vb> <idiv>BnoK текста без <Ь>ошибки</Ь></й1у> Vbody>

Рисунок 4 - Ошибка: перепутанные теги

Кроме того, нередко встречается ситуация, когда потерян закрывающий тег (рис. 2): _

<table>

<tbody>

<tr>

<td>fl4ewKa ®l</td>

<td>34ewKa ¥2

<td>fl4ewKa ®3</td>

<td>34ewKa «4</td>

</tr>

</tbody>

</table>

Рисунок 5 - Ошибка: отсутствует закрывающий тег

По стандарту ИТМЬ5 не допускается вложение блочного тега внутрь строчного, однако разработчики часто пренебрегают этим правилом (рис. 3):

<span><div>HeKoppeKTHaq 3anMCbVdiv>Vspan>

Рисунок 6 - Ошибка: блочный тег внутри строчного

Синтаксический анализатор должен уметь обрабатывать атрибуты. Кроме обычных кавычек «"» в документах встречаются и одинарные «'». Кроме того, кавычки могут отсутствовать вовсе. На рисунке 4 изображен тег, иллюстрирующий эти ситуации:_

<img src="image.png" alt=nOflCKA3KA width='r t>

Рисунок 7 - Ошибка: отсутствуют кавычки у аргумента

HTML-документ не может считаться корректным, если не содержит теги HTML, HEAD и BODY.

Все вышеперечисленные ошибки являются грубыми нарушениями стандарта HTML5. Однако любой современный браузер не только не выдаст никакого сообщения об ошибке, но и постарается исправить их [2].

Использованные источники: 1. Habr.com. Бенчмарк HTML парсеров. - Режим доступа:

https://habr.com/ru/post/163979/ (Дата обращения: 30.05.2019) 2. Garsiel, T. How Browsers Work: Behind the scenes of modern web browsers / T. Garsiel, P. Irish. - Режим доступа:

https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/ (Дата обращения: 31.05.2019)

i Надоели баннеры? Вы всегда можете отключить рекламу.