Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2015, 19:26   #1
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию Исходный текст страницы из Webbrowser (аналог)

Всем привет!
Все знают (или умеют искать, чтобы узнать), как получить исходный html-код страницы загруженной в Webbrowser. Но, возможно, либо никто не сталкивался, либо никому подобное нафиг не нужно было, поэтому решения своего вопроса я нагуглить не смог.
Суть проблемы в следующем. Если на открытой в Webbrowser странице есть динамически подгружаемый контент, то при использовании этого кода (ниже), он в исходнике не отобразится. Например: я загрузил в Webbrowser страницу с какими-нибудь комментариями ВКонтакте. Комментариев много, и внизу есть ссылка "К предыдущим записям". Предположим, что последний отображаемый на данный момент комментарий от Васи Пупкина. Я нажимаю ссылку "К предыдущим записям", они подгружаются и последним отображаемым комментарием уже стал комментарий Ани Попкиной. И я получаю исходный html-код страницы с помощью функции описанной в конце поста. НО! В этом исходном коде нет текста комментария от Ани Попкиной, а последним значится только комментарий Васи Пупкина.
Код, которым я получаю исходник страницы:
Код:
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
 var
   ps: IPersistStreamInit;
   ss: TStringStream;
   sa: IStream;
   s: string;
 begin
   ps := WebBrowser.Document as IPersistStreamInit;
   s := '';
   ss := TStringStream.Create(s);
   try
     sa := TStreamAdapter.Create(ss, soReference) as IStream;
     Result := Succeeded(ps.Save(sa, True));
     if Result then ACode.Add(ss.Datastring);
   finally
     ss.Free;
   end;
 end;
Соответственно, вопрос в следующем: есть ли возможность как-нибудь сохранять текущее содержимое Webbrowser, с уже подгруженным динамическим контентом.
Если после моих объяснений пока не очень понятно или вы уверены, что я ошибаюсь, то создайте простой проект. Киньте webbrowser, memo и две кнопки. По нажатию первой кнопки делаем navigate с этим урл (это как раз комментарии). По нажатию второй кнопки загружаем с помощью указанной выше функции исходный код страницы в memo.
А теперь сравните загруженный код с тем, который загрузится после того, как вы мышью нажмете в Webbrowser внизу ссылу "К предыдущим записям". Он останется прежним, несмотря на то, что в самом компоненте комментарии подгрузятся.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 28.07.2015, 19:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я тебе скажу больше: Другие браузеры тоже динамический контент не выцеживают в HTML. Поэтому у меня два предложения:
1) Считывать body.innerHTML
2) Проходить по DOM. Рекурсивно например.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 19:51   #3
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я тебе скажу больше: Другие браузеры тоже динамический контент не выцеживают в HTML. Поэтому у меня два предложения:
1) Считывать body.innerHTML
Да, пока ждал ответа, именно этот вариант и стал использовать, работает)
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Webbrowser, исходный код страницы megostudent Работа с сетью в Delphi 2 26.08.2013 23:34
Исходный код страницы Tumana HTML и CSS 1 05.07.2013 21:14
Исходный код страницы RiseD Работа с сетью в Delphi 2 10.08.2012 15:54
Исходный код страницы Abuhamed PHP 5 02.02.2010 00:34