1

Тема: JScript: Пример сохранения web-страницы в TXT, HTML и MHT (веб-архив)

Скрипт загружает страницу из интернета и сохраняет ее в трех форматах:
1. текстовом - аналогично сохранению файла в IE с типом файла "Текстовый файл (*.txt)"
2. исходный код страницы
3. веб-архив MHT.

Одна тонкость - MHT формируется библиотекой CDO с ошибкой - когда в веб-архив внедрен внешний CSS файл (<link rel="stylesheet" type="text/css" href="file.css" />), то ссылку на него библиотека указывает неверно, вследствие чего страница из mht отображается без стиля из этого файла. Если же css-таблица вписана в сам html-исходник с помощью тега <style>, то тогда все отображается верно.

// идея взята с RSDN, автор Alexey Goncharov
// переработка моя
var wsh = new ActiveXObject("WScript.Shell");
var Message = new ActiveXObject( "CDO.Message" ) ;
var Config  = new ActiveXObject( "CDO.Configuration" ) ;

var cdoSuppressNone        = 0;  // загружать все
var cdoSuppressImages      = 1;  // не загружать картинки
var cdoSuppressBGSounds    = 2;  // не загружать фоновые звуки
var cdoSuppressFrames      = 4;  // не загружать фреймы
var cdoSuppressObjects     = 8;  // не загружать объекты
var cdoSuppressStyleSheets = 16; // не загружать таблицы стилей
var cdoSuppressAll         = 31; // не загружать ничего из вышеперечисленного

var Flag = cdoSuppressNone;
var UserName = '';
var Password = '';

Message.Configuration = Config;
Message.AutoGenerateTextBody = true;

Message.CreateMHTMLBody( "http://www.yandex.ru", Flag) ;

// сохранить страницу как txt
var Stream = Message.TextBodyPart.GetEncodedContentStream(); // поток по умолчанию в юникоде
Stream.Charset = 'ascii';  // что ни ставь все равно перекодируется в системную по умолчанию кодировку
Stream.SaveToFile( "Page.txt", 2 );

// сохранить страницу как html
var Stream = Message.HTMLBodyPart.GetEncodedContentStream(); // поток по умолчанию в юникоде
Stream.Charset = 'ascii';  // что ни ставь все равно перекодируется в системную по умолчанию кодировку
Stream.SaveToFile( "Page.htm", 2 );

// сохранить страницу как веб-архив .MHT
var Stream = Message.BodyPart.GetStream();
Stream.SaveToFile( "Page.mht", 2 );