Russian Qt Forum

Qt => XML => Тема начата: MAGrikh от Июнь 18, 2009, 15:31



Название: Разбор HTML
Отправлено: MAGrikh от Июнь 18, 2009, 15:31
Задача следующего рода:
из полученного HTML кода получить определенные данные
структура получаемой страницы заранее известна (могут меняться только кол-во колонок в таблицах), ну и собственно те данные которые надо считать

как это лучше сделать, с помощью чего?!

Ниже кусок кода страницы (как пример) и из него надо на выходе получить: User =Krokodil, Rank=4176, Age=23
Код
HTML
<tr>
<td class="details">
<table>
<tr>
<th>User</th>
<td>Krokodil</td>
</tr>
<tr>
<th>Rank</th>
<td>4176</td>
</tr>
<tr>
<th>Age</th>
<td>23</td>
</tr>
</table>
 
</td>
<td class="desc1" rowspan="2">
<div></div>
</td>
</tr>
 


Название: Re: Разбор HTML
Отправлено: lit-uriy от Июнь 18, 2009, 16:31
Модуль QtXml смотри


Название: Re: Разбор HTML
Отправлено: kirill от Июнь 19, 2009, 05:49
Модуль QtXml смотри

Наверное не есть хорошо парсить html модулем xml. Если в html есть хоть одна ошибка, типа незакрытый тег <td>, то просто загрузить в DOM не получится. Возможно тут и SAX не поможет.
Парсить скорее всего нужно просто находя нужные строки.
Например искать теги <th>.


Название: Re: Разбор HTML
Отправлено: spectre71 от Июнь 19, 2009, 05:56
Если ничего путного не найдется, можно посмотреть QTextDocument, он явно умеет парсить HTML.
Может в его исходниках есть что интересное.


Название: Re: Разбор HTML
Отправлено: denka от Июнь 19, 2009, 22:09
Посмотри libxml2 там есть возможность работы с html. Еще можно webkit попробывать. Именно webkit, а не QtWebkit троли к сожелению закрыли большую часть либы.  Ну или самому парсить как крайний случай.


Название: Re: Разбор HTML
Отправлено: mugabe от Июнь 22, 2009, 08:40
По большому счету парсер html не так уж и сложен в реализации. SAX-like парсер для HTML это 50-100 строк кода.

Но для данной задачи по-моему, вполне достаточно будет выделить необходимые значения regexp-ами.


Название: Re: Разбор HTML
Отправлено: denka от Июнь 22, 2009, 09:35
По большому счету парсер html не так уж и сложен в реализации. SAX-like парсер для HTML это 50-100 строк кода.

Интерестно посмотреть на такой SAX парсер   ;)


Название: Re: Разбор HTML
Отправлено: spectre71 от Июнь 22, 2009, 09:46
По большому счету парсер html не так уж и сложен в реализации. SAX-like парсер для HTML это 50-100 строк кода.

Но для данной задачи по-моему, вполне достаточно будет выделить необходимые значения regexp-ами.

Да, уж. Гораздо проще написать свой XML парсер чем для HTML.


Название: Re: Разбор HTML
Отправлено: mugabe от Июнь 22, 2009, 13:12
Ок, будет свобоное время накидаю реализацию. Там правда ничего сложного :)


Название: Re: Разбор HTML
Отправлено: MAGrikh от Июнь 22, 2009, 17:42
Проблема в том, что с RegExp я тоже не сильно знаком, и если честно до сих пор не могу понять с какого бока подойти к решению вопроса...

Пример я привел самый простой из того что надо

Стандартный пример который есть в QT на парсинг XML и мог бы подойти - ни в какую кушать мой xHTML не стал...
А проблема как раз в том, что я больше понимаю что к чему когда вижу работающий пример... и вот пример найти никак не могу :(