crossplatform.ru

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

++Norton++
  опции профиля:
сообщение 21.11.2009, 1:02
Сообщение #1


Студент
*

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

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




Репутация:   1  


Есть куча файлов html. Из этих файлов ничего не надо, кроме того что стоит в тегах href с одинаково начинающимся адресом. Т.е. html документ имеет примерно такой вид:
<html><head></head><body>
.....
ненужная часть
...
<td>
<a href="?php=text&randomText...">ТекстДляПарсинга</a>
</td>
<td align="left">1234</td>
и т.д. (аналогичные ссылки и пр. теги)

Собственно нужно спарсить текст (хотя бы в QString) находящийся на месте "ТекстДляПарсинга" и то, что за ним, т.е. 1234.
Подскажите, как это лучше всего будет сделать?
Просто никогда раньше парсеры не приходилось писать.
Заранее спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V  < 1 2  
Начать новую тему
Ответов (10 - 12)
++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 Рейтинг@Mail.ru Текстовая версия Сейчас: 22.6.2025, 5:37