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

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

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

HTML Parser - C++

28.07.2011, 13:29. Просмотров 2189. Ответов 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
Посмотрите здесь:

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

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

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

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/*, ссылка конечно же в теге...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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
4 / 4 / 0
Регистрация: 28.04.2010
Сообщений: 162
28.07.2011, 13:44  [ТС]     HTML Parser #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
напрмер нашли тэг <div> и парсим далше пока не встретим закрывающий тэг </div>
да, как раз сейчас и думаю над такой реализацией
но это всё равно немного не оптимально получается...
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.07.2011, 13:47     HTML Parser #4
Цитата Сообщение от Lindemann66 Посмотреть сообщение
да, как раз сейчас и думаю над такой реализацией
но это всё равно немного не оптимально получается...
это и есть оптимально - разбиение на элементарные лексемы
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
28.07.2011, 14:33     HTML Parser #5
Согласен с Maxwe11. Для вашего примера я бы создал
C++
1
std::vector < std::string > tokens;
и выделял бы подстроки между тэгами, добавляя все эти "дела" в вектор.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 06:42     HTML Parser
Еще ссылки по теме:

Разбор страницы в MS HTML Parser - Visual Basic
ВОПРОС: Имеется имя локального файла, загруженного с помощью MS Internet Tranfer Control. Файл - текстовый (html). Как обозначить...

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

PHP Simple HTML DOM Parser - PHP
Не подключается библиотека, на страничке написал 1 строчку с подключением include 'simple_html_dom.php'; запускаю и выдает ерор Parse...

Php simple html dom parser - PHP
Здравствуйте, дорогие форумчане. Начинаю изучать библиотеку парсинга php simple html dom parser. Возникло несколько вопросов. Вот...

Парсинг HTML на Python 3 через http.parser - Python
Нужно распарсить HTML-документ, чтобы вытащить из него определенные данные. Сделал так (html в .txt-шник закинул, не ругайтесь) from...

Не завалялся ли у кого parser NML to HTML на PHP - HTML, CSS
В общем такой вот злобный формат News Markup Language в нем надо выдрать то что находится между тегами &lt;text&gt; &lt;?xml version=&quot;1.0&quot;...


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 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
Ответ Создать тему
Опции темы

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