Тема: 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 );