crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Парсер HTML файла
++Norton++
  опции профиля:
сообщение 21.11.2009, 22:52
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380

Спасибо сказали: 0 раз(а)




Репутация:   1  


Спасибо за советы! Вот, кстати, пример куска хтмл файла:
 <tbody>
    <tr class="thead" valign="bottom">
      <td rowspan="1" width="80%">Text</td>
      <td align="right" width="20%">Some info:</td>
    </tr>    <tr class="list" bgcolor="#ffffff">
      <td>
        <a href="?cmd=words&amp;page=1&amp;inf=7423&amp;secret=deae3a1c7690f&amp;ps=%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B8">текст1</a>
      </td>
      <td align="right">5701375</td>
    </tr>    <tr class="list" bgcolor="#eeeeee">
      <td>
        <a href="?cmd=words&amp;page=1&amp;inf=12704&amp;secret=d115239573deae3a1c7690f&amp;ps=%D1%82%D0%B5%D0%BA%D1%81%D1%82">текст2</a>
      </td>
      <td align="right">5701027</td>
    </tr>    <tr class="list" bgcolor="#ffffff">
      <td>
        <a href="?cmd=words&amp;page=1&amp;inf=125704&amp;secret=67c115239573deae3a1c7690f&amp;ps=%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D0%BF%D0%B5%D1%81%D0%BD%D0%B8">текст3</a>
      </td>
      <td align="right">2804612</td>
    </tr>    <tr class="tlist" bgcolor="#eeeeee">
........

Вот. Из такого кода нужно выдрать текст1, текст2, текст3 а также те числа, что идут после ссылки, т.е. в теге td align=right.
Т.е. в данном примере после первой ссылки это 5701375, после второй 5701027, после третьей 2804612.
Заранее еще раз спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
++Norton++
  опции профиля:
сообщение 29.11.2009, 14:16
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380

Спасибо сказали: 0 раз(а)




Репутация:   1  


Сделал регулярку, как посоветовал rcdimon. Получилось вроде этого:
QRegExp rx("<a.+href.*=.*\"(.+?)\">(.+?)</a.*>");
while ((pos = rx.indexIn(Page, pos)) != -1) {

     parserList->append( rx.cap(1) );
     pos += rx.matchedLength();
}

Однако ничего не парсит :( С другой регуляркой работает нормально. Подскажите, дело в регулярке или нужно использовать не "rx.cap" а что-то другое?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 29.11.2009, 20:10
Сообщение #13


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Блин, я где-то нарывался на html парсер на основе бизона.
Вот бы его в либу оформить, можно было бы просто подключать к проекту.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 15:13