LINUX.ORG.RU

[Qt] [опять] разбор html

 ,


0

0

Я смотрю, темы про Qt на выходных попёрли ))

У меня задачка такая. Я делаю с помощью QNetworkManager-а POST-запрос, дожидаюсь, когда весь ответ загрузится, получаю HTML-страничку. Мне с этой странички нужно вытащить один абзац, который является результатом POST-запроса.

Я виду два варианта: читать страницу как текст и проверять каждую строчку на совпадение с регекспом, или заюзать Qt-шные QWebElement-ы. Второй вариант кажется мне более красивым, я решил воспользоваться им. Но получил забавную проблему.

Вся страница, вообще-то, у меня уже есть, мне нужно её только распарсить. Я создаю QWebFrame и сую туда QString с HTML-текстом. После чего этот хитрый frame начинает грузить картинки и javascriptы с google ads - и пока он всё не подгрузит вытащить *полный* список нужных элементов страницы не получается. Чтобы получить мой абзац приходится догружать дофига рекламы.

И вот отсюда вопрос: можно ли сделать так, чтобы этот frame на догружал внешние элементы, а довольствовался тем куском HTML, который я ему подсунул? Если нет, то могу ли я заюзать какой-нибудь другой класс, чтобы получить из него дерево DOM-элементов страницы?

★★
Ответ на: комментарий от trashymichael

> QDomDocument

я не уверен, что QDomDocument съест HTML, которые не является валидным XML-документом

как я понял, встраиваемый браузер?

да, QWebFrame - это кусок вебкита.

name_no ★★
() автор топика
Ответ на: комментарий от name_no

не уверен так попробуй, а если не съест юзай libxmlN какой-нибудь. все едят а qt не съест? глубо юзать кусок вебкита для разбора html, найди что-то. это же великий и могучий сипипи :).

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

> не уверен так попробуй

не-а, не схавала:

«Error: doesn't work: „tag mismatch“ line 119 column 201»

name_no ★★
() автор топика
Ответ на: комментарий от trashymichael

кроме того, тут еще вопрос валидности самого html. если он соответствует заявленному доктайпу, думаю, проблем быть не должно. если же сайт работает в quirks режиме — попробуй, что ли, через tidy его пропускать, авось повезет.

trashymichael ★★★
()
Ответ на: комментарий от legolegs

> >google xpath

В невалидном html? Который даже в лабораторных условиях xml'ом не является?

Да. Например, libxml2 ругается во время разбора html, но тем не менее, всё работает. Есть и другой вариант - перед разбором прогнать какой-нибудь «sanitizer» (только зачем, если и так всё работает?)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.