Russian Qt Forum

Qt => XML => Тема начата: Fess от Август 01, 2011, 05:11



Название: Qt html parser
Отправлено: Fess от Август 01, 2011, 05:11
Тема похоже обсуждалась не раз... и все же.
Стоит задача погулять по структуре html странички и вытянуть попутно кое-какие данные, без использования всего функционала QtWebKit (Мне не нужен целый браузер :)).
Страницу получил прямым GET-ом. QDomDocument загрузить ее не может - валится с ошибками. Насколько я понимаю, он нормально разбирает только xml. QWebPage использовать не могу - требует гуи, а приложение должно быть консольным и легковесным.
Может я чего-то не заметил? Можно ли средствами Qt парсить html без поднятия всего WebKit?
Мне нужно что-то вроде QDomDocument, но только чтобы он работал с любым html.
Кажется, что весь нужный функционал в Qt есть, но нет только нужного api..
Пока решил проблему использованием сторонних библиотек, но хотелось бы Qt-style решения..


Название: Re: Qt html parser
Отправлено: Vass от Август 01, 2011, 10:35
QDomDocument загрузить ее не может - валится с ошибками. Насколько я понимаю, он нормально разбирает только xml.

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

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

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


Название: Re: Qt html parser
Отправлено: kolob от Март 24, 2012, 20:24
Цитировать
Можно попробовать использовать SAX (QXmlReader)

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


Название: Re: Qt html parser
Отправлено: Bepec от Март 25, 2012, 11:14
SAX - это последовательный разбор. Построчно считывается исходный текст и считывает теги.

DOM - это целостный разбор. Считывает весь документ и пытается построить DOM дерево. Если есть ошибки - не сумеет построить.