Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Qt: вытащить текст из html страницы  (Прочитано 4866 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
необходимо выдрать текст из html страницы. к примеру отсюда надо забрать "привет"
...много_тегов<div dir="ltr" class="t0">привет</div>много_тегов...
как средствами QRegExp сделать конструкцию типа "удалить все символы в строке, кроме тех, что находятся в блоке <div dir="ltr" class="t0"></div>", подскажите? или посоветуйте что почитать по регулярным выражениям. а то у М. Шлее примеров мало(

Оффлайн kosteek

  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #1 : 20 Мая 2012, 18:14:35 »
Вам нужен хтмл парсер. Посмотрите тут пример, реализован с помощью libxml2.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #2 : 20 Мая 2012, 18:16:58 »
HTML не парсится регулярными выражениями, для этого нужен специальный парсер.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #3 : 20 Мая 2012, 18:41:20 »
всем спасибо. я поступил иначе (что за привычка задавать вопросы, если сам до конца не обдумал все варианты).
я считал html текс в Qstring переменную. далее
...много_тегов<div dir="ltr" class="t0">привет</div>много_тегов...привел к виду
...много_тегов^привет</div>много_тегов...далее удалил все до "^" включительно. далее удалил все после первой встречной "<" включительно. в итоге получил то, что и требовалось. А именно "привет".

если в будущем буду иметь дело более серьезно с разборами xml, html, json, то буду смотреть в сторону нормальных парсеров. еще раз всем спасибо.
« Последнее редактирование: 20 Мая 2012, 18:44:56 от FluffyMan »

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #4 : 20 Мая 2012, 18:45:28 »
всем спасибо. я поступил иначе (что за привычка задавать вопросы, если сам до конца не обдумал все варианты).
я считал html текс в Qstring переменную. далее
...много_тегов<div dir="ltr" class="t0">привет<>много_тегов...привел к виду
...много_тегов^привет<>много_тегов...далее удалил все до "^" включительно. далее удалил все после первой встречной "<". в итоге получил то, что и требовалось.

если в будущем буду иметь дело более серьезно с разборами xml, html, json, то буду смотреть в сторону парсеров. еще раз всем спасибо.


Имеем:
...много_тегов<div dir="ltr" class="t0">пр<b>и<b>вет<>много_тегов...Получаем:
прто есть, если в тексте попадается какой-нибудь тег, то он ломает весь алгоритм.

Мой вам совет: не изобретайте велосипеда (сам так делал... :(). За вас его уже изобрели. :)
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #5 : 20 Мая 2012, 18:54:09 »
всем спасибо. я поступил иначе (что за привычка задавать вопросы, если сам до конца не обдумал все варианты).
я считал html текс в Qstring переменную. далее
...много_тегов<div dir="ltr" class="t0">привет<>много_тегов...привел к виду
...много_тегов^привет<>много_тегов...далее удалил все до "^" включительно. далее удалил все после первой встречной "<". в итоге получил то, что и требовалось.

если в будущем буду иметь дело более серьезно с разборами xml, html, json, то буду смотреть в сторону парсеров. еще раз всем спасибо.


Имеем:
...много_тегов<div dir="ltr" class="t0">пр<b>и<b>вет<>много_тегов...Получаем:
прто есть, если в тексте попадается какой-нибудь тег, то он ломает весь алгоритм.

Мой вам совет: не изобретайте велосипеда (сам так делал... :(). За вас его уже изобрели. :)

в моем частном случае там нет никаких тегов 100%. это ответ гугла на запрос перевода слова) да я знаю, что давно все сделано за нас. просто в моем случае как-то проще сделать велосипед, чем читать описания на парсеры. это как из пушки по воробьям.
« Последнее редактирование: 20 Мая 2012, 18:56:39 от FluffyMan »

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #6 : 20 Мая 2012, 19:01:17 »
в моем частном случае там нет никаких тегов 100%. это ответ гугла на запрос перевода слова) да я знаю, что давно все сделано за нас. просто в моем случае как-то проще сделать велосипед, чем читать описания на парсеры. это как из пушки по воробьям.


Тогда, понимаю, чем проще и быстрей, тем лучше. :)
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #7 : 20 Мая 2012, 19:07:32 »
в моем частном случае там нет никаких тегов 100%. это ответ гугла на запрос перевода слова) да я знаю, что давно все сделано за нас. просто в моем случае как-то проще сделать велосипед, чем читать описания на парсеры. это как из пушки по воробьям.


Тогда, понимаю, чем проще и быстрей, тем лучше. :)

да.

и все же Вы правы. Для уверенности (вдруг там все таки както окажутся исмволы "<" и ">", мало ли в переведенном тексте будут эти символы) я переделал так:

приводим к виду
..много_тегов~привет~много_тегов...и потом уже удаляем до "~" включительно и после "~" включительно (так как в тексте перевода врядли окажется тильда).

Оффлайн danya

  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #8 : 23 Мая 2012, 01:42:08 »
как всё сложно
а нельзя смотреть на знак ">" если после него не встречается знак "<" копируем текст в буфер пока не появится "<" и не нужно изобретать велосипед или я чего то недопонял?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #9 : 23 Мая 2012, 08:22:17 »
danya,
ты только что изобрёл свой велосипед =)

Оффлайн danya

  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #10 : 23 Мая 2012, 13:54:20 »
danya,
ты только что изобрёл свой велосипед =)
возможно
но вот это
Цитировать
и потом уже удаляем до "~" включительно и после "~" включительно (так как в тексте перевода врядли окажется тильда).
явно костыль :)

Оффлайн goldskif

  • Активист
  • *
  • Сообщений: 527
    • Просмотр профиля
    • Альтернативные проекты
Re: Qt: вытащить текст из html страницы
« Ответ #11 : 28 Мая 2012, 13:36:39 »
не знаю, што таке QRegExp, но на баше хтмл-теги выдираются просто ))
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #12 : 28 Мая 2012, 18:25:04 »
не знаю, што таке QRegExp, но на баше хтмл-теги выдираются просто ))

очень ценный комментарий))

Пользователь решил продолжить мысль 28 Мая 2012, 18:36:58:
как всё сложно
а нельзя смотреть на знак ">" если после него не встречается знак "<" копируем текст в буфер пока не появится "<" и не нужно изобретать велосипед или я чего то недопонял?

не допоняли. таких скобок очень пного. и какая по счету мне нужна заранее неизвестно. (или известно, но я об этом не знаю)))
« Последнее редактирование: 28 Мая 2012, 18:36:58 от FluffyMan »

Оффлайн danya

  • Участник
  • *
  • Сообщений: 105
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #13 : 29 Мая 2012, 00:53:48 »
какая разница есть они или нет
дело в том что мы смотрим на закрывающую скобку если после нее не идёт открывающая то этот текст мы и берём
можете выслать пример попробую накидать алгоритм

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: вытащить текст из html страницы
« Ответ #14 : 29 Мая 2012, 09:36:36 »
какая разница есть они или нет
дело в том что мы смотрим на закрывающую скобку если после нее не идёт открывающая то этот текст мы и берём
можете выслать пример попробую накидать алгоритм

Дело в том, что есть такие теги, у которых внутри тела ( после > и перед <) идет текст, мне не нужный. Например тег ссылка. Позже пример кину.

 

Страница сгенерирована за 0.073 секунд. Запросов: 26.