Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.01.2016, 13:57
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию Сообщения из чата

Народ, помогите плиз получить сообщения из чата http://tophope.ru/chat/

получить могу, но только последнее и свое, как получать все сообщения от всех пользователей

Отправка происходит так

Код:
POST2:=TStringStream.Create('');
POST2.WriteString('sidebar=0');
POST2.WriteString('&lastrefresh=123631');
POST2.WriteString('&_xfRequestUri=/chat/');
POST2.WriteString('&_xfNoRedirect=1');
POST2.WriteString('&_xfToken='+xfToken);
POST2.WriteString('&_xfResponseType=json');
HTTP.Document.LoadFromStream(POST2);
HTTP.HTTPMethod('POST','http://tophope.ru/taigachat/list.json');
HTTP.Document.SaveToStream(Answer);
Form1.Memo2.Text:=Utf8ToAnsi(Answer.DataString);
в конце страницы можно распарсить сообщение, последнее, но только свое....
Ответить с цитированием
  #2  
Старый 13.01.2016, 18:45
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Получаю код страницы... с текстовыми сообщениями из чата
Код:
 <span class='DateTime muted'><abbr class=\"DateTime\" data-time=\"1452677957\" data-diff=\"20962\" data-datestring=\"\u044f\u043d\u0432 13, 2016\" data-timestring=\"12:39\">\u044f\u043d\u0432 13, 2016 \u0432 12:39<\/abbr> - <\/span> <span class=\" \"> <a title=\"aHaJIuTuK\" href=\"members\/ahajiutuk.44416\/\" class=\"dark_chat taigachat_msg_user\" itemprop=\"name\"><span class=\"username\"><span class=\"style56\">aHaJIuTuK<\/span><\/span><\/a>: <div class='taigachat_messagetext ugc'>otpravka iz D7<\/div> <\/span> <\/li> <li id=\"taigachat_message_123641\" data-userid=\"30326\" data-messageid=\"123641\" class=\"taigachat_msg_to\"> <a href=\"members\/azktorin.30326\/\" class=\"avatar Av30326s _plainImage taigachat_avatar\" data-avatarhtml=\"true\"><img src=\"data\/avatars\/s\/30\/30326.jpg?1440279386\" width=\"48\" height=\"48\" alt=\"azktorin\" \/><\/a> <span class='DateTime muted'><abbr class=\"DateTime\" data-time=\"1452683142\" data-diff=\"15777\" data-datestring=\"\u044f\u043d\u0432 13, 2016\" data-timestring=\"14:05\">\u044f\u043d\u0432 13, 2016 \u0432 14:05<\/abbr> - <\/span> <span class=\" \"> <a title=\"azktorin\" href=\"members\/azktorin.30326\/\" class=\"dark_chat taigachat_msg_user\" itemprop=\"name\"><span class=\"username\"><span class=\"style66\">azktorin<\/span><\/span><\/a>: <div class='taigachat_messagetext ugc'>&gt;&gt; aHaJIuTuK: \u043a\u0442\u043e \u0442\u043e \u0432 \u0434\u0435\u043b\u0444\u0438 \u043f\u0440\u0438\u043a\u0430\u043b\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0445\u0414)<\/div> <\/span> <\/li> <li id=\"taigachat_message_123642\" data-userid=\"30326\" data-messageid=\"123642\" class=\"\"> <a href=\"members\/azktorin.30326\/\" class=\"avatar Av30326s _plainImage taigachat_avatar\" data-avatarhtml=\"true\"><img src=\"data\/avatars\/s\/30\/30326.jpg?1440279386\" width=\"48\" height=\"48\" alt=\"azktorin\" \/><\/a> <span class='DateTime muted'><abbr class=\"DateTime\" data-time=\"1452683868\" data-diff=\"15051\" data-datestring=\"\u044f\u043d\u0432 13, 2016\" data-timestring=\"14:17\">\u044f\u043d\u0432 13, 2016 \u0432 14:17<\/abbr> - <\/span> <span class=\" \"> <a title=\"azktorin\" href=\"members\/azktorin.30326\/\" class=\"dark_chat taigachat_msg_user\" itemprop=\"name\"><span class=\"username\"><span class=\"style66\">azktorin<\/span><\/span><\/a>: <div class='taigachat_messagetext ugc'><img src=\"http:\/\/s017.radikal.ru\/i437\/1601\/2a\/5230a91e4032.png\" class=\"bbCodeImage LbImage\" alt=\"[&#x200B;IMG]\" data-url=\"http:\/\/s017.radikal.ru\/i437\/1601\/2a\/5230a91e4032.png\" \/><\/div> <\/span> <\/li> <li id=\"taigachat_message_123643\" data-userid=\"30326\" data-messageid=\"123643\" class=\"\"> <a href=\"members\/azktorin.30326\/\" class=\"avatar Av30326s _plainImage taigachat_avatar\" data-avatarhtml=\"true\"><img src=\"data\/avatars\/s\/30\/30326.jpg?1440279386\" width=\"48\" height=\"48\" alt=\"azktorin\" \/><\/a> <span class='DateTime muted'><abbr class=\"DateTime\" data-time=\"1452683882\" data-diff=\"15037\" data-datestring=\"\u044f\u043d\u0432 13, 2016\" data-timestring=\"14:18\">\u044f\u043d\u0432 13, 2016 \u0432 14:18<\/abbr> - <\/span> <span class=\" \"> <a title=\"azktorin\" href=\"members\/azktorin.30326\/\" class=\"dark_chat taigachat_msg_user\" itemprop=\"name\"><span class=\"username\"><span class=\"style66\">azktorin<\/span><\/span><\/a>: <div class='taigachat_messagetext ugc'>\u0443\u0440\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e <img src=\"http:\/\/tophope.ru\/styles\/default\/xenforo\/smilies\/smile.png\" 

как выдернуть текст по всему документу из тегов ?
<div class='taigachat_messagetext ugc'> ТУТ ТЕКСТ <\/div>
Ответить с цитированием
  #3  
Старый 14.01.2016, 03:47
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Не работает парсинг, поскольку результат:
Цитата:
0:
Не показывать: <div class='taigachat_messagetext ugc'>

Вывести результат: otpravka iz D7

Не показывать: <\/div>

1:
Не показывать: <div class='taigachat_messagetext ugc'>

Вывести результат: &gt;&gt; aHaJIuTuK: \u043a\u0442\u043e \u0442\u043e \u0432
\u0434\u0435\u043b\u0444\u0438 \u043f
\u0440\u0438\u043a\u0430\u043b\u044b
\u0432\u0430\u0435\u0442\u0441\u044f \u0445\u0414)

Не показывать: <\/div>

2:
Не показывать: <div class='taigachat_messagetext ugc'>

Вывести результат: <img src=\"http:\/\/s017.radikal.ru\/i437\/1601\/2a\/5230a91e4032.png\"
class=\"bbCodeImage LbImage\" alt=\"[&#x200B;IMG]\" data-
url=\"http:\/\/s017.radikal.ru\/i437\/1601\/2a
\/5230a91e4032.png\" \/>

Не показывать: <\/div>

3:
Не показывать: <div class='taigachat_messagetext ugc'>

Вывести результат: \u0443\u0440\u043e\u043a
\u0431\u0443\u0434\u0435\u0442 \u043f\u043e
\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e <img
src=\"http:\/\/tophope.ru\/styles\/default\/xenforo\/smilies
\/smile.png\"
... здесь завис в сборке, нету закрывающего тега

З.Ы. Вот функция из drkb, с её помощью (почти) создан этот отчёт
Код:
Procedure IsolateText( Const S: String; Tag1, Tag2: String; list:TStrings );
Var
   pScan, pEnd, pTag1, pTag2: PChar;
   foundText: String;
   searchtext: String;
Begin
   { Set up pointers we need for the search. HTML is not case sensitive, so
     we need to perform the search on a uppercased copy of S.}
   searchtext := Uppercase(S);
   Tag1:= Uppercase( Tag1 );
   Tag2:= Uppercase( Tag2 );
   pTag1:= PChar(Tag1);
   pTag2:= PChar(Tag2);
   pScan:= PChar(searchtext);
   Repeat
     { Search for next occurence of Tag1. }
     pScan:= StrPos( pScan, pTag1 );
     If pScan <> Nil Then Begin
       { Found one, hop over it, then search from that position
         forward for the next occurence of Tag2. }
       Inc(pScan, Length( Tag1 ));
       pEnd := StrPos( pScan, pTag2 );
       If pEnd <> Nil Then Begin
         { Found start and end tag, isolate text between,
           add it to the list. We need to get the text from
           the original S, however, since we want the un-uppercased
           version! So we calculate the address pScan would hold if
           the search had been performed on S instead of searchtext. }
        SetString( foundText, 
                    Pchar(S) + (pScan- PChar(searchtext) ),
                    pEnd - pScan );
         list.Add( foundText );
         { Continue next search after the found end tag. }
         pScan := pEnd + Length(tag2);
       End { If }
       Else { Error, no end tag found for start tag, abort. }
         pScan := Nil;
     End; { If }
   Until pScan = Nil;
End;

Последний раз редактировалось Alegun, 14.01.2016 в 04:03.
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
ApxaHGe1 (14.01.2016)
  #4  
Старый 17.01.2016, 01:45
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Вообщем сделал то что хотел, все получается, все работает

есть одно но, в чат кидают картинки.... и ставят смайлы, и их я получаю, как
Цитата:
<img src=\"http:\/\/tophope.ru\/styles\/default\/xenforo\/smilies\/smile.png\" class=\"mceSmilie\" alt=\"=)\" title=\"smile.png =)\" \/>

как можно это конвертировать хотя бы в читабельную ссылку ?

Последний раз редактировалось ApxaHGe1, 17.01.2016 в 02:12.
Ответить с цитированием
  #5  
Старый 17.01.2016, 03:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

убери бэк-слеши (\) и вытащи значение аттрибута src. Вот тебе будет ссылка.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
ApxaHGe1 (23.01.2016)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025