![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Спецам по TWebBrowser'у [D5]
ИМХО © (2004-06-23 11:13:00)Вопрос, наверняка, ламерский.
Задача такая: нам дается некий URL. Невидимый TWebBrowser должен
выкачать эту страницу со всеми картинками, css-ами, скриптами и прочим хозяйством и локально сохранить все это.
Как это осуществить?
Jurijs (2004-07-06 20:15:00) [1]На delphi.about.com есть такая статья, как раз по твоему вопросу:
http://delphi.about.com/library/weekly/aa062904a.htm
Описывется способ сохранения страницы со всей графикой в один файл - Web archive, single file (*.mht).
Код такой
uses CDO_TLB, ADODB_TLB;
...
procedure WB_SaveAs_MHT(WB: TWebBrowser; FileName: TFileName);
var
Msg: IMessage;
Conf: IConfiguration;
Stream: _Stream;
URL : widestring;
begin
if not Assigned(WB.Document) then Exit;
URL := WB.LocationURL;
Msg := CoMessage.Create;
Conf := CoConfiguration.Create;
try
Msg.Configuration := Conf;
Msg.CreateMHTMLBody(URL, cdoSuppressAll, '', '');
Stream := Msg.GetStream;
Stream.SaveToFile(FileName, adSaveCreateOverWrite);
finally
Msg := nil;
Conf := nil;
Stream := nil;
end;
end; (* WB_SaveAs_MHT *)
и использовние:
//first navigate
WebBrowser1.Navigate(' http://delphi.about.com');
//then save
WB_SaveAs_MHT(WebBrowser1,'c:\WebBrowser1.mht');
Плохиш (2004-07-06 11:49:00) [2]
> leonidus (06.07.04 09:09) [15]
> TWebBrowser очень мошная штука, но напрямую зависимот от
> текущих настроек и в качестве ядра для скачивания чего либо
> из интрнета да еще без ведома юзересовершенно не подходит,
А что, обсуждение создания вредоносных програм, здесь уже разрешено?
Landgraph (2004-07-06 11:35:00) [3]Точно не знаю, может ли он сохранять как вам надо, но вообще компонент оч. хорошо развитый. Большинство вопросов возникающих в конференциях реализованы в готовых функциях:
http://www.euromind.com/iedelphi/
Спросить EmbeddedWB =)
leonidus (2004-07-06 09:09:00) [4]TWebBrowser очень мошная штука, но напрямую зависимот от текущих настроек и в качестве ядра для скачивания чего либо из интрнета да еще без ведома юзере совершенно не подходит, взять хотябы щелчки которые появляются при переходе со траницы на страницу...
Piter (2004-06-30 00:35:00) [5]Да, сразу хочу предупредить про грабли. Если в настройках IE стоит не показывать картинки, то WebBrowser их тоже не будет загружать.
Это по умолчанию... можно обойти такой факт...
Piter (2004-06-30 00:33:00) [6]Шаман (23.06.04 11:21) [1]
Есть один хороший совет:
не использовать TWebBrowser :)
совет далек от хорошего... ты даже не представляешь всю мощь TWebBrowser
А вообще интересная проблема... можно попробовать использовать код типа того:
var
vaIn, vaOut: Olevariant;
CmdTarget: IOleCommandTarget;
begin
if WebBrowser1.Document <> nil then
try
WebBrowser1.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PGUID(nil), OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except end;
при этом все равно будет выведено окно сохранения, где пользователь должен выбрать имя файла, тип сохранения...
Можно задать файо по умолчанию определив vaIn - но без окошка все равно не обойтись, имхо... не может так WB сделать...
С другой стороны можно грузить HTML, анализировать его, потом вытягивать картинки. Не так уж это и сложно, как может показаться на первый взгляд. И уж точно осуществимо, всякие оффлайн качалки сайтов с этим прекрасно справляются...
(2004-06-28 20:28:00) [7]Удалено модератором
(2004-06-28 20:05:00) [8]Удалено модератором
(2004-06-25 21:33:00) [9]Удалено модератором
Algol (2004-06-25 12:37:00) [10]
> Я извиняюсь, но ты сам пробуешь свои советы?
Ага, я не только пробую я их даже использую .)
Только давно это было. Не помню уже че он там сохраняет.
Вообще-то там дело хитрое, диалог сохранения не совпадает с тем, который высвечивается при сохранении вручную. Я тоже помню пытался сохранять всю страницу целиком вот этот фрагмент
TWebBrowser.ExecWB(OLECMDID_SaveAS,4,FileName)
- последнее на чем я остановился в исходнике ))
ИМХО (2004-06-24 22:48:00) [11]Еще не могу понять, почему нет параметра для выходного файла? Может, я желаю сохранить в текстовый файл. Может в веб-архив, а сохраняет всегда html. Причем Web Page, HTML only, а не Web Page, complete(что предпочтительнее).
ИМХО (2004-06-24 22:45:00) [12]
> Algol (24.06.04 19:07) [5]
> TWebBrowser.ExecWB(OLECMDID_SaveAS,4,FileName)
Я извиняюсь, но ты сам пробуешь свои советы?
Он сохраняет только html-страницу, без сопровождающих файлов (картинок, скриптов, стилей)
ИМХО (2004-06-24 20:04:00) [13]А что значит 4?
В хэлпе только про 0-3 написано:
Constant Value Meaning
OLECMDEXECOPT_DODEFAULT 0 Use the default behavior, whether prompting the user for input or not.
OLECMDEXECOPT_PROMPTUSER 1 Execute the command after obtaining user input.
OLECMDEXECOPT_DONTPROMPTUSER 2 Execute the command without prompting the user.
OLECMDEXECOPT_SHOWHELP 3 Show help for the command, but do not execute it.
Algol (2004-06-24 19:07:00) [14]TWebBrowser.ExecWB(OLECMDID_SaveAS,4,FileName)
ИМХО (2004-06-24 17:20:00) [15]Это я пробовал еще в самом начале. Такой способ сохраняет только страницу, а нужно сохранять всё(в папке <filename>.files)
Algol (2004-06-24 14:10:00) [16]document.execCommand('SaveAs');
ИМХО (2004-06-23 12:02:00) [17]А чем пользоваться тогда?
Шаман (2004-06-23 11:21:00) [18]Есть один хороший совет:
не использовать TWebBrowser :)