Сохранение веб-страницы в формате HTML или MHT с использованием DELPHI
При работе с Delphi, компонент TWebBrowser позволяет создавать собственные приложения для просмотра веб-страниц или добавлять в приложение возможности просмотра Интернета, файлов, сетевых ресурсов и документов.
Как сохранять веб-страницу из TwebBrowser
При использовании Internet Explorer, вы можете просматривать исходный HTML-код страницы и сохранять её в файл на локальном диске. Если вы просматриваете страницу, которую хотите сохранить, выберите пункт меню Файл/Сохранить как. В диалоговом окне, которое откроется, будет предложено несколько типов файлов. Использование различных типов фалов влияет на сохранение страницы. Также при этом важна раскрутка сайта в google.
Компонент TWebBrowser (расположенный на вкладке "Интернет" палитры компонентов) обеспечивает доступ к функциональности веб-браузера из приложений Delphi. Обычно вам понадобится сохранить на диск отображаемую внутри веб-браузера страницу как HTML-файл.
<b>Сохранение веб-страницы в виде HTML</b>
Если вы хотите сохранить веб-страницу в виде сырого HTML, то должны выбрать "Веб-страница, только HTML (*. HTM, *. HTML)". При этом исходный код страницы будет записан на диск без изменений. Данная операция не сохраняет графику или другие файлы, используемые на странице, это означает, что если вы снова загрузите файл с диска, то увидите неработающие ссылки на изображения.
Далее приведен код для сохранения страницы в виде HTML на Delphi:
uses ActiveX;
...
procedure WB_SaveAs_HTML(WB : TWebBrowser; const FileName : string) ;
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
begin
if not Assigned(WB.Document) then
begin
ShowMessage('Document not loaded!') ;
Exit;
end;
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate) ;
try
Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
if Failed(PersistStream.Save(Stream, True)) then ShowMessage('SaveAs HTML fail!') ;
finally
FileStream.Free;
end;
end; (* WB_SaveAs_HTML *)
И пример использования:
//сначала перейти на страницу
WebBrowser1.Navigate('http://delphi.about.com') ;
//затем сохранить
WB_SaveAs_HTML(WebBrowser1,'c:WebBrowser1.html') ;
Примечания:
• Интерфейсы IPersistStreamInit и IStream определены в модуле ActiveX
• Веб-страница сохраняется в виде необработанного HTML в файле WebBrowser1.html в корневом каталоге диска C.
<b>MHT: веб архив в отдельном файле</b>
При сохранении веб-страницы, как "Веб-архив, один файл (*. MHT)" веб-документ будет сохранен в формате Multipurpose Internet Mail Extension HTML (MHTML) с расширением файла ".mht". Все относительные ссылки внутри веб-страницы будут перестроены, и внедренное содержимое включено в .mht файл, а не сохранено в отдельную папку (как в случае с "Веб-страница, полностью (*. HTM, *. HTML)").
MHTML позволяет отправлять и получать веб-страницы и другие HTML документы с помощью программ электронной почты, таких как Microsoft Outlook и Microsoft Outlook Express, или даже пользовательских решений для отправки электронной почты на Delphi. MHTML позволяет вставлять изображения непосредственно в теле сообщения электронной почты, а не присоединять их к сообщению.
Вот как можно сохранить веб-страницу в виде одного файла (формат MHT) с помощью кода Delphi:
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 *)
Пример использования:
//сначала перейти на страницу
WebBrowser1.Navigate('http://delphi.about.com') ;
//затем сохранить
WB_SaveAs_MHT(WebBrowser1,'c:WebBrowser1.mht') ;
Примечание: Класс _Stream определен в модуле ADODB_TLB, который вы, вероятно, уже создали. Код для интерфейсов IMessage и IConfiguration подключается из библиотеки cdosys.dll. CDO расшифровывается как Collaboration Data Objects - объектная библиотека, разработанная для отправки SMTP-сообщений.
Модуль CDO_TLB автоматически генерируется в Delphi. Чтобы создать модуль, выберите из главного меню "Import Type Library", затем выберите "C:WINDOWSsystem32cdosys.dll" и нажмите кнопку "Create unit". Сняв офис, вы сможете неплохо зарабатывать на компьютере, обращайтесь в агентство недвижимости «Киев — квартира посуточно», и собственный офис в центре города вам обеспечен. А «Мягкая мебель (Донецк)» - это возможность приобрести для офиса со скидкой.
Смотрите также:
|