Russian Qt Forum
Ноябрь 23, 2024, 03:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt html parser  (Прочитано 9570 раз)
Fess
Гость
« : Август 01, 2011, 05:11 »

Тема похоже обсуждалась не раз... и все же.
Стоит задача погулять по структуре html странички и вытянуть попутно кое-какие данные, без использования всего функционала QtWebKit (Мне не нужен целый браузер Улыбающийся).
Страницу получил прямым GET-ом. QDomDocument загрузить ее не может - валится с ошибками. Насколько я понимаю, он нормально разбирает только xml. QWebPage использовать не могу - требует гуи, а приложение должно быть консольным и легковесным.
Может я чего-то не заметил? Можно ли средствами Qt парсить html без поднятия всего WebKit?
Мне нужно что-то вроде QDomDocument, но только чтобы он работал с любым html.
Кажется, что весь нужный функционал в Qt есть, но нет только нужного api..
Пока решил проблему использованием сторонних библиотек, но хотелось бы Qt-style решения..
Записан
Vass
Гость
« Ответ #1 : Август 01, 2011, 10:35 »

QDomDocument загрузить ее не может - валится с ошибками. Насколько я понимаю, он нормально разбирает только xml.

HTML формально тоже подвид XML, но QDomDocument хорошо разбирает, только корректные xml документы,
то есть, например, если браузер проглотит незакрытый тег, до этот класс сообщит об ошибе разбора и перестанет работать.

Может я чего-то не заметил? Можно ли средствами Qt парсить html без поднятия всего WebKit?

Можно попробовать использовать SAX (QXmlReader),
а если вы точно знаете что нужно спарсить со страницы, то лучше вообще использовать QRegExp.
Записан
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #2 : Март 24, 2012, 20:24 »

Цитировать
Можно попробовать использовать SAX (QXmlReader)

А SAX хорошо разбирает html страницу?
Записан

Qt 5.11.0, Win, MinGW
Bepec
Гость
« Ответ #3 : Март 25, 2012, 11:14 »

SAX - это последовательный разбор. Построчно считывается исходный текст и считывает теги.

DOM - это целостный разбор. Считывает весь документ и пытается построить DOM дерево. Если есть ошибки - не сумеет построить.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.