Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Lindemann66
 Аватар для Lindemann66
3 / 3 / 0
Регистрация: 28.04.2010
Сообщений: 162
#1

HTML Parser - C++

28.07.2011, 13:29. Просмотров 2168. Ответов 5
Метки нет (Все метки)

Всем привет!

Необходимо написать parser содержимого html - в частности, тэгов

Лично я в основу положил обычный проход по html, с поиском начального символа тэга <, определения типа тэга и считывания его содержимого до следующего открывающего, либо закрывающего тэга

Плюс, необходимо учитывать вложенность тэгов
То есть, если ситуация
HTML5
1
<div>текст1 <a>текст2</a> текст3</div>
то в результате должно получиться
div : текст 1 текст2 текст3
div, a : текст 2
a сохраняется, так как у него тип - inside (сам придумал), тк, если не приписывать содержимое тэга а в тэг div, может потеряться смысл содержимого тэга div

Вобщем-то, алгоритм почти реализован, но ситуация с вложенностью в нём обрабатывается плохо...

Может, у кого-то будут какие-то свежие идеи на счёт такого parser'а html?
Буду благодарен за любой ответ!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2011, 13:29     HTML Parser
Посмотрите здесь:

html в консоли C++
Парсить html C++
создание html C++
HTML GUI C++
C++ Парсер HTML на C++
C++ Тэги HTML в C++
Нужны исходники WAP WEB или XML Parser-а C++
Парсер HTML C++
C++ HTML документ
C++ Правила вложенности тегов html (html разметка на С++)
C++ Перевести обычный файл в HTML, добавив соответствующие HTML-теги
У меня в задании "Parser xml нужно реализовать самостоятельно." - это как? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 13:43     HTML Parser #2
Цитата Сообщение от Lindemann66 Посмотреть сообщение
Лично я в основу положил обычный проход по html, с поиском начального символа тэга <, определения типа тэга и считывания его содержимого до следующего открывающего, либо закрывающего тэга
я бы сначала получил выражение полностью, а только потом парсил его содержимое
напрмер нашли тэг <div> и парсим далше пока не встретим закрывающий тэг </div> получили лексему
Код
<div>текст1 <a>текст2</a> текст3</div>
, а только потом парсим содержимое этой лексемы
Lindemann66
 Аватар для Lindemann66
3 / 3 / 0
Регистрация: 28.04.2010
Сообщений: 162
28.07.2011, 13:44  [ТС]     HTML Parser #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
напрмер нашли тэг <div> и парсим далше пока не встретим закрывающий тэг </div>
да, как раз сейчас и думаю над такой реализацией
но это всё равно немного не оптимально получается...
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 13:47     HTML Parser #4
Цитата Сообщение от Lindemann66 Посмотреть сообщение
да, как раз сейчас и думаю над такой реализацией
но это всё равно немного не оптимально получается...
это и есть оптимально - разбиение на элементарные лексемы
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
28.07.2011, 14:33     HTML Parser #5
Согласен с Maxwe11. Для вашего примера я бы создал
C++
1
std::vector < std::string > tokens;
и выделял бы подстроки между тэгами, добавляя все эти "дела" в вектор.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.07.2011, 06:42     HTML Parser #6
Цитата Сообщение от Lindemann66
Вобщем-то, алгоритм почти реализован, но ситуация с вложенностью в нём обрабатывается плохо...
нужно применять конечный автомат
1 пример
2 пример (идея)
Yandex
Объявления
29.07.2011, 06:42     HTML Parser
Ответ Создать тему
Опции темы

Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru