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

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

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

HTML Parser - C++

28.07.2011, 13:29. Просмотров 2206. Ответов 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?
Буду благодарен за любой ответ!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2011, 13:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос HTML Parser (C++):

Нужны исходники WAP WEB или XML Parser-а - C++
Очень срочно нужны исходники WAP WEB или XML Parser-а. Работа с MFC исключена. Еще лучще если кто знает где достать исходники...

У меня в задании "Parser xml нужно реализовать самостоятельно." - это как? - C++
Плиз объясните новичку, с чего начинать.

XML Parser - C++
Разбираюсь с open source проектом http://conv-net.sourceforge.net/doc/index.html свёрточная нейронная сеть вот, в котором в свою очередь...

Перевести обычный файл в HTML, добавив соответствующие HTML-теги - C++
Задание состоит в том, что имеется файл текстовый, его нужно перевести в HTML, т.е. добавить тэги &lt;html&gt;&lt;body&gt; к началу файла, заключить...

Правила вложенности тегов html (html разметка на С++) - C++
Смысл программы: создание html разметки (добавление, удаление тегов) Подскажите, как и где реализовать правила вложенности тегов?...

Парсинг HTML HTML::Parser - Perl
Хочу предложить перевод статьи Ken MacFarlane. Надеюсь у новичков после прочтения, отпадёт много вопросос по этой теме :)....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 13:43 #2
Цитата Сообщение от Lindemann66 Посмотреть сообщение
Лично я в основу положил обычный проход по html, с поиском начального символа тэга <, определения типа тэга и считывания его содержимого до следующего открывающего, либо закрывающего тэга
я бы сначала получил выражение полностью, а только потом парсил его содержимое
напрмер нашли тэг <div> и парсим далше пока не встретим закрывающий тэг </div> получили лексему
Код
<div>текст1 <a>текст2</a> текст3</div>
, а только потом парсим содержимое этой лексемы
0
Lindemann66
4 / 4 / 0
Регистрация: 28.04.2010
Сообщений: 162
28.07.2011, 13:44  [ТС] #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
напрмер нашли тэг <div> и парсим далше пока не встретим закрывающий тэг </div>
да, как раз сейчас и думаю над такой реализацией
но это всё равно немного не оптимально получается...
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 13:47 #4
Цитата Сообщение от Lindemann66 Посмотреть сообщение
да, как раз сейчас и думаю над такой реализацией
но это всё равно немного не оптимально получается...
это и есть оптимально - разбиение на элементарные лексемы
1
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
28.07.2011, 14:33 #5
Согласен с Maxwe11. Для вашего примера я бы создал
C++
1
std::vector < std::string > tokens;
и выделял бы подстроки между тэгами, добавляя все эти "дела" в вектор.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.07.2011, 06:42 #6
Цитата Сообщение от Lindemann66
Вобщем-то, алгоритм почти реализован, но ситуация с вложенностью в нём обрабатывается плохо...
нужно применять конечный автомат
1 пример
2 пример (идея)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 06:42
Привет! Вот еще темы с ответами:

C# HTML Parser - C#
Посоветуйте плз хтмл парсер для C#, желательно с примерами.

Qt Html parser - C++ Qt
Добрый! Есть страница, код которой содержит вот такую часть: &lt;select class=&quot;selectMake&quot; id=&quot;selectMake&quot;...

Html parser - C#
Собственно нужна помощь с парсингом Html страницы, а точнее нужно получить ссылку вида: http://site.com/meetups/*, ссылка конечно же в теге...

Simple HTML DOM Parser - PHP
Здравствуйте.Пытаюсь освоить данную беду.И вот такой вопрос. Как спарсить страницу по url понятно. А если нужно получить данные с данной...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.07.2011, 06:42
Ответ Создать тему
Опции темы

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