Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> coхранить сайт как текстовый файл 
:(
    Опции темы
nicksss
Дата 24.11.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.11.2005

Репутация: нет
Всего: нет



Мне нужно в Delphi coхранить сайт как текстовый файл (не html, а сам текст)!
что я только уже не пробывал ...
нашол более-менее оптимальный вариант:

Использую код:
Код

procedure GetHtmlCode(WebBrowser: TWebBrowser; FileName: string);
var
  Document: IHTMLDocument2;
  PersistFile: IPersistFile;

begin
 Document := WebBrowser.Document as IHtmlDocument2;
 PersistFile := Document as IPersistFile;
 PersistFile.save(StringToOleStr(FileName), true);

 if Document <>  nil then
   form1.Memo1.Text := (Document.all.Item(NULL, 0) as IHTMLElement).outerText; //как текст
   form1.Memo2.Text := (Document.all.Item(NULL, 0) as IHTMLElement).outerHTML; //как html
end;


Почти со всеми сайтами всьо нормально,но если в сайте используются скрипты, то 'как текст" - нет ничего.
например http://www.kompass.com/kinl/index.php

даже если страничку сохранять как txt через браузер - то сохраняет пустой файл


Помогите пожалуста обойти проблему, очень нада, буду очень презнателен
заранее спасибо!

Это сообщение отредактировал(а) Girder - 25.11.2005, 11:13
PM MAIL   Вверх
F1reF0x
Дата 25.11.2005, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 10.10.2005

Репутация: нет
Всего: нет



Код

uses WinInet

function GetStr(url: string): string;
const
BufferSize = 6536;
var
hInternet, hConnect: pointer;
Buffer: array[1..BufferSize] of char;
BufferLen: LongWord;
i: integer;
begin
result:='';
hInternet:=InternetOpen('Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0)', INTERNET_OPEN_TYPE_PRECONFIG,0, nil, 0);
if Assigned(hinternet) then
  try
hConnect:=InternetOpenUrl(hInternet, pchar(url),  nil, 0, 0, 0);
repeat
if not InternetReadFile(hConnect, @Buffer, SizeOf(Buffer), BufferLen) then bufferlen:=0;
for i:=1 to bufferlen do result:=result+char(Buffer[i]);
until bufferlen=0;
finally
InternetCloseHandle(hinternet);
end;
end;


В response сохранится исходник
PM MAIL   Вверх
nicksss
Дата 25.11.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.11.2005

Репутация: нет
Всего: нет



Цитата(F1reF0x @ 25.11.2005, 00:32)
В response сохранится исходник

только html....
а мне нужен текст странички...
сайт использует фремы, я пытаюсь к ним достучатся:

Код

for i := 0 to (WebBrowser1.OleObject.Document.frames.Length - 1) do
    memo1.Text:=form1.WebBrowser1.OleObject.Document.frames.item(i).document.queryCommandEnabled('Copy') then
      ShowMessage('copy command is enabled for frame no.' + IntToStr(i));


но выдает ошыбку: нет доступа ...(
PM MAIL   Вверх
nicksss
Дата 26.11.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.11.2005

Репутация: нет
Всего: нет



Цитата(RAdmin @ 25.11.2005, 19:08)
Код

uses
  mshtml, ActiveX, ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  IDoc: IHTMLDocument2;
  Strl: TStringList;
  sHTMLFile: string;
  v: Variant;
  Links: IHTMLElementCollection;
  i: Integer;
  Link: IHTMLAnchorElement;
begin
  if OpenDialog1.Execute then
  begin
    sHTMLFile := OpenDialog1.FileName;
    Strl := TStringList.Create;
    try
      Strl.LoadFromFile(sHTMLFile);
      Idoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
      try
        IDoc.designMode := 'on';
        while IDoc.readyState <> 'complete' do
          Application.ProcessMessages;
        v := VarArrayCreate([0, 0], VarVariant);
        v[0] := Strl.Text;
        IDoc.Write(PSafeArray(System.TVarData(v).VArray));
        IDoc.designMode := 'off';
        while IDoc.readyState <> 'complete' do
          Application.ProcessMessages;
        Memo1.Lines.Text := IDoc.body.innerText;
      finally
        IDoc := nil;
      end;
    finally
      Strl.Free;
    end;
  end;
end;



Ты открываеш уже сохраненную страничку на винте,
а как открыть страничку загруженую в webbrowser?
PM MAIL   Вверх
nicksss
Дата 26.11.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.11.2005

Репутация: нет
Всего: нет



я уже нашол выход...
может кому пригодится:

Код

var
   HTML_Doc: IHTMLDocument2;
   Window: IHTMLWindow2;
   oRange1: variant;
   i:olevariant;
begin
  HTML_Doc := WebBrowser1.Document As IHTMLDocument2;
  Window := HTML_Doc.parentWindow As IHTMLWindow2;
  i:= edit2.Text; // загружаю имя фрейма
  oRange1 := Window.frames.item(i).document.body.innerText;
  memo1.Text:=orange1;
end;



Большое спасибо всем за помощь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.