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

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

  1. Admin

    Admin Гость

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

    tolorion Гость

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

    alik86 Lotus team
    Lotus team

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

    tolorion Гость

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

    alik86 Lotus team
    Lotus team

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

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

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Код (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 Гость

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

    tolorion Гость

    Попробовал вторым способом!
    Вот код
    -------------------------------------------------------------------
    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'е и получается следующая картина
    url_bad.jpg
    -------------------------------------------
    а должно быть вот так
    url_Norma.jpg
    -------------------------------------------
    Объясните, plz, в чем проблема???
     
  9. hosm

    hosm * so what *

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

    tolorion Гость

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

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

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

    Dock1100 :-]

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

    tolorion Гость

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

    tolorion Гость

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

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

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

    tolorion Гость

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

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

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

    tolorion Гость

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

    tolorion Гость

    Возникла следующая проблема.
    Если открывать документ, сохраненный в выше приведенном примере (www.zip) в Internet Explorer'е, то он открывается нормально. Но если документ открывать в WebBrowser1 нашего проекта, то вылетает сообщение:
    oshibka_scenariya.jpg
    Добавил в проект 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 Гость

    И еще!
    Если соединение с интернетом по какой-либо причине отсутствует (например, нет вообще), то даже в Internet Explorer'e страница открывается не корректно
    bez_interneta.jpg

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

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