Как сохранить Html на компьютер?

Тема в разделе "Delphi - Сети", создана пользователем Admin, 24 окт 2007.

  1. Admin

    Admin Гость

    Репутация:
    0
    Не подскажете безграмотному как заставить свою программу сохранять открывающуюся (или открывшуюся) html страничку? Если можно, приведите пожалуйста кусочек кода. Заранее спасибо!
     
  2. tolorion

    tolorion Гость

    Репутация:
    0
    Страница загружена в WebBrowser. Как сохранить ее полностью, а не только html код.
     
  3. alik86

    alik86 Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    1
    Выбрать пункт меню Файл -> Сохранить как... Выбрать тип файла что-то типа "Веб-страница, полностью" -> нажать "Сохранить"
     
  4. tolorion

    tolorion Гость

    Репутация:
    0
    Имеется ввиду, что на форму кинут WebBrowser1, в него загружена страница. Теперь необходимо эту страницу сохранить на жесткий диск, т.е. программно реализовать функцию Файл -> Сохранить как.
     
  5. alik86

    alik86 Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    1
    Ой, а я и не заметил, что это раздел "Delphi - Сети". Всё, умываю руки... :)
     
  6. vital

    vital Больной Компом Детектед

    Репутация:
    0
    Регистрация:
    29 янв 2006
    Сообщения:
    2.434
    Симпатии:
    39
    Код (Delphi):
    uses
    ActiveX, MSHTML_TLB, SHDocVw_TLB,
    ComCtrls, OleCtrls;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    HTMLDocument: IHTMLDocument2;
    PersistFile: IPersistFile;
    begin
    HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
    PersistFile := HTMLDocument as IPersistFile;
    PersistFile.Save(StringToOleStr('c:\SavedFile.html'), System.True);
    end;
    либо
     
  7. tolorion

    tolorion Гость

    Репутация:
    0
    Спасибо!
    Сейчас попробую разобраться!
     
  8. tolorion

    tolorion Гость

    Репутация:
    0
    Попробовал вторым способом!
    Вот код
    -------------------------------------------------------------------
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ActiveX, OleCtrls, SHDocVw, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    SaveDialog1: TSaveDialog;
    WebBrowser1: TWebBrowser;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    procedure SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser);
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    webbrowser1.Navigate('http://www.delphiexpert.ru');
    end;

    procedure TForm1.SaveHTMLSourceToFile(const FileName: string;
    WB: TWebBrowser);
    var
    PersistStream: IPersistStreamInit;
    FileStream: TFileStream;
    Stream: IStream;
    SaveResult: HRESULT;
    begin
    PersistStream := WB.Document as IPersistStreamInit;
    FileStream := TFileStream.Create(FileName, fmCreate);
    try
    Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
    SaveResult := PersistStream.Save(Stream, True);
    if FAILED(SaveResult) then
    MessageBox(Handle, 'Fail to save HTML source', 'Error', 0);
    finally
    FileStream.Free;
    end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    if SaveDialog1.Execute then
    SaveHTMLSourceToFile(SaveDialog1.FileName, WebBrowser1);
    end;

    end.
    -------------------------------------------------------------------------------------------------------
    Загрузил страницу в WB нормально!
    Сохранил через SD страницу как 'de.html'
    Теперь пробую открыть сохраненную страницу в FireFox'е и получается следующая картина
    Как сохранить Html на компьютер?
    -------------------------------------------
    а должно быть вот так
    Как сохранить Html на компьютер?
    -------------------------------------------
    Объясните, plz, в чем проблема???
     
  9. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.445
    Симпатии:
    8
    Похоже, что css не скачивали и/или путь к нему неправильный?
     
  10. tolorion

    tolorion Гость

    Репутация:
    0
    CSS (англ. Cascading Style Sheets — каскадные таблицы стилей)
    Это для меня слишком сложно...
    Когда я сохраняю страницу в FireFox'e, то генерируется два файла: непосредственно html страница и папка с рисунками. В нашем же случае сохраняется только html страница, а папки с рисунками я не нахожу. Может быть в этом все дело?
     
  11. vital

    vital Больной Компом Детектед

    Репутация:
    0
    Регистрация:
    29 янв 2006
    Сообщения:
    2.434
    Симпатии:
    39
    так а что мешает сохранить их самостоятельно?
     
  12. Dock1100

    Dock1100 :-]

    Репутация:
    0
    Регистрация:
    9 ноя 2009
    Сообщения:
    665
    Симпатии:
    1
  13. tolorion

    tolorion Гость

    Репутация:
    0
    КАК?
    Я так понимаю, что эта процедура будет не менее сложная, чем SaveHTMLSourceToFile???
     
  14. tolorion

    tolorion Гость

    Репутация:
    0
    Не могу скачать пример www.zip
    Щелкаю на ссылке ADODB_TLB.pas - он открывается в новой вкладке, CDO_TLB.pas тоже открывается в новой вкладке, щелкаю по ссылке www.zip загружается страница codeby.net/ipb.html
     
  15. vital

    vital Больной Компом Детектед

    Репутация:
    0
    Регистрация:
    29 янв 2006
    Сообщения:
    2.434
    Симпатии:
    39
    правая кнопка - сохранить как.
    не должно так быть. у меня все качает..
     
  16. tolorion

    tolorion Гость

    Репутация:
    0
    Да, Вы правы, через правую кнопку - сохранить как закачал архив. Распаковал, запустил проект. Высветилась какая-то ошибка... нет какой-то dll... не успел заметить, т.к. нажал ОК, запустил RUN и проект скомпилировался и запустился. Загружаю URL 'http://www.delphiexpert.ru'. Загрузил нормально. Сохраняю страницу (назвал 'de.html') в отдельную папку. Рисунки тоже сохраняются.
    Как сохранить Html на компьютер?
    Теперь запускаю файл 'de.html' в Google Chrome или FireFox'e и вот что получается:
    Как сохранить Html на компьютер?
     
  17. vital

    vital Больной Компом Детектед

    Репутация:
    0
    Регистрация:
    29 янв 2006
    Сообщения:
    2.434
    Симпатии:
    39
    Хром не умеет открывать mht файы. Открывайте IE
     
  18. tolorion

    tolorion Гость

    Репутация:
    0
    Perfect!!!
    Открыл сохраненную на жестком диске страницу в IE. Страница открылась идеально со всеми рисунками!
    Всем кто помогал в раскрытии темы огромное СПАСИБО и RESPECT!
     
  19. tolorion

    tolorion Гость

    Репутация:
    0
    Возникла следующая проблема.
    Если открывать документ, сохраненный в выше приведенном примере (www.zip) в Internet Explorer'е, то он открывается нормально. Но если документ открывать в WebBrowser1 нашего проекта, то вылетает сообщение:
    Как сохранить Html на компьютер?
    Добавил в проект OpenDialog и копку для загрузки файла; в качестве документа использовал страницу 'http://codeby.net/forum/threads/18385.html', которую сохранил как 'codeby.mht'.

    Вот добавленный код:

    procedure TForm36.FormCreate(Sender: TObject);
    begin
    Edit1.Text:='http://codeby.net/forum/threads/18385.html';
    end;

    procedure TForm36.ButtonLoadClick(Sender: TObject);
    begin
    if Opendialog1.Execute then
    WebBrowser1.Navigate(opendialog1.fileName);
    end;

    Что нужно сделать, чтобы избежать ошибки?
     
  20. tolorion

    tolorion Гость

    Репутация:
    0
    И еще!
    Если соединение с интернетом по какой-либо причине отсутствует (например, нет вообще), то даже в Internet Explorer'e страница открывается не корректно
    Как сохранить Html на компьютер?

    ...???
     
Загрузка...

Поделиться этой страницей