Страница 1 из 2

TWebBrowser и HTML

Добавлено: 11 окт 2005, 23:39
OTELLO
Всем приветик,такой вопрос у меня-как можно в этом компоненте узнать во время работы программы html код загруженной странички,и например,записать его в файл? (хотя на самом деле просто нужно его узнать и найти в нем отдельные элементы,скажем теги <img>)

Либо как это можно сделать без TWebBrowser-напрямую,подключаясь к Internet Explorer, например. Может какие- нибудь компоненты есть сторонние, кот. позволяют сие творить, подскажите кто чем может...

Заранее спасибки...

Добавлено: 12 окт 2005, 03:25
AiK
Сейчас лень код работающий искать в дебрях винта. Нужно соответствующие интерфейсы COM'овские дёргать.
Посмотри тут: http://www.euromind.com/iedelphi/
Если не найдёшь - актуализируй тему, с утреца кину.

Добавлено: 12 окт 2005, 08:21
OTELLO
Нашёл я там компонент TIEDownLoad, позволяет качать любые файлы как напрямую,так и в поток, но это не то. Понимаешь- мне нужно написать программу, которая будет сама сохранять рисунок с загруженной в данный момtyn в IE странчки, рисунок по выбору... Вот...

Добавлено: 12 окт 2005, 20:22
Naeel Maqsudov

Код: Выделить всё

var 
  doc: IHTMLDocument2; 
begin 
  doc:=WebBrowser1.Document; 
  doc.<тут после точки вывалится список со свойствами IHTMLDocument2 там найдете HTML и многое другое> 
end; 
Однако, после того как Вы уточнили свой вопрос, думаю, что IHTMLDocument2 - это не тот интерфейс, который Вам нужен....
Надо что-то другое, что даст уже готовые картинки.

Добавлено: 12 окт 2005, 21:26
AiK
До картинки я не знаю как достучаться, а с сохранением самой страницы всё довольно просто:

Код: Выделить всё

procedure TForm1.Button2Click(Sender: TObject);
var
  Stream: IStream;
  PersistStream: IPersistStreamInit;
  FileStream: TFileStream;
begin
  FileStream:=TFileStream.Create('c://test.html',fmCreate);
  Stream:=TStreamAdapter.Create(FileStream);
  PersistStream:=WebBrowser1.Document as IPersistStreamInit;
  PersistStream.Save(Stream,true);
  FileStream.Free;
end;
Все проверки оставляю на твоей совести :)

Картинки, как промежуточный вариант, можно из кеша тягать.

Я позже попытаюсь найти и про картинки.

Добавлено: 12 окт 2005, 21:43
AiK
В общем - идея такая: с указанной ссылки нужно утащить компонент, который позволяет обрабатывать события браузера.
В каком-нибудь onBeforeNavigate2 запоминать документы, связанные с картинками. А потом таким же макаром, как в предыдущем сообщении, сохранять эти картинки. Единственный непродуманный момент - как определять какую именно картинку сохранять. А вообще, если не отключать принудительно контекстное меню, но это можно и так по правой кнопке мыши сделать :)

Добавлено: 12 окт 2005, 23:14
OTELLO
На самом деле в голову пришла безумная мысль, а именно:
скаченный файл открыть методом loadFromFile какого- нибудь TStringList'a, в нем уже отыскать что требуется по нужному алгоритму и закачать уже то, что найдено, например тот же рисунок...

Конечно это обходнми путями, но всё таки решение, как думаете?

Добавлено: 14 окт 2005, 22:41
Naeel Maqsudov
нибудь TStringList'a, в нем уже отыскать что требуется
Мы помоему на разных языках говорим....
Я правильно понял, что Вы все-таки решили искать элементы IMG в тексте HTML?
Тогда просто используйте интерфейс IHTMLDocument2 как я писал выше.

С помощью этого интерфеса вы получите и текст HTML, а также массу всего интересного в том числе коллекцию images. Однако это не сами битмапы, так как у элемента Image есть только одно полезное свойство - ToString...

Т.е. не надо ничего искать.
См. мое предыдущее сообщение.

Добавлено: 15 окт 2005, 00:13
OTELLO
Да Вы абсолютно меня правильно поняли,именно это мне и надо,тока я наверное совсем дурак и не могу понять насчёт интерфейса-что надо написать в разделе uses чтобы интерфейс стал понятен???

Добавлено: 15 окт 2005, 00:19
Naeel Maqsudov
Поищите в среди в папке Borland строку "IHTMLDocument"... Если мне правильно изменяет склероз, это должен быть mshtml.pas. Соответственно, писать надо будет mshtml.