| 
| 
 | Вопрос # 3 969/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!
 В этом фрагменте кода я  сохраняю страничку в файл.
 
 Но вопрос заключается в следующем:
 По событию OnClick у Button1 вывести в поле Memo текст веб-странички, не исходный текст с тегами, а  тот текст, что виден пользователю в окне браузера. Только текст.
 Можно ли  как то это реализовать ?
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) Приложение:Переключить в обычный режим uses URLMon; function DownloadFile(SourceFile, DestFile: string): Boolean;begin  try    Result:=UrlDownloadToFile(nil,PChar(SourceFile),PChar(DestFile),0,nil)=0;  except    Result := False;  end;end;  procedure TForm1.FormCreate(Sender: TObject);begin  Edit1.Text := 'http://expert.delphi.int.ru';       Edit2.Text := 'Delphi.int.ru Expert.html';end;  procedure TForm1.Button1Click(Sender: TObject);begin    DownloadFile(Edit1.Text,Edit2.Text);          Application.ProcessMessages(); end;
|  |   Вопрос задал: Kyran29 (статус: Посетитель)Вопрос отправлен: 4 апреля 2010, 13:55
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Паровоз Здравствуйте, Kyran29!
 uses
  mshtml,
  ActiveX;
procedure TForm1.Button1Click(Sender: TObject);
var
  doc: IHTMLDocument2;
  v: Variant;
  list: TStringList;
begin
  list:=TStringList.Create;
  list.LoadFromFile('......');//имя файла с HTML кодом для парсинга
  v:=VarArrayCreate([0,0],varVariant);
  v[0]:=list.Text;
  doc:=CoHTMLDocument.Create as IHTMLDocument2;
  doc.write(PSafeArray(TVarData(v).VArray));
  Memo1.Clear;
  Memo1.Lines.Add(doc.body.innerText);
  doc.close;
  list.Free;
end;
|  | Ответ отправил: Паровоз (статус: 10-ый класс)Время отправки: 8 апреля 2010, 21:10
 Оценка за ответ: 5
 Комментарий к оценке: Большое спасибо, Паровоз. |  
 Мини-форум вопросаВсего сообщений: 14; последнее сообщение — 15 августа 2010, 08:33; участников в обсуждении: 5. 
|   | min@y™ (статус: Доктор наук), 4 апреля 2010, 14:01 [#1]:Парсер. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Kyran29 (статус: Посетитель), 4 апреля 2010, 14:20 [#2]:Других вариантов нет ? |  
|   | Егор (статус: 10-ый класс), 4 апреля 2010, 14:30 [#3]:а чем webbrowser не нравится? Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | Kyran29 (статус: Посетитель), 4 апреля 2010, 14:34 [#4]:webbrowser нравится,  вопрос как реализовать ? |  
|   | min@y™ (статус: Доктор наук), 4 апреля 2010, 14:51 [#5]:TWebBrowser - ацтой. Руками проще. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Kyran29 (статус: Посетитель), 4 апреля 2010, 19:30 [#6]:Уважаемые эксперты! 
 Это все ? Вопрос можно закрыть ?
 |  
|   | min@y™ (статус: Доктор наук), 4 апреля 2010, 20:16 [#7]: Цитата (Kyran29): Это все ? Вопрос можно закрыть ?  Ты вот такой сайт знаешь? Мы раньше его читали, когда на работе было нечем заняться. Интернет у нас был строго только на одном компутере, который стоял в строго опечатанном закрытом кабинетике. Чтобы попасть в этот кабинетик хотя бы на часок, надо было написать служебную записку и оббегать с ней несколько начальников, собирая их авторгафы. Ну так вот, я написал прогу, которая качает инфу (страницы, картинки и пр.) с этого сайта и зарядил ею тот самый комп. Закачка и парcинг HTML происходит там без всяких TWebBrowser'ов (это ацтой, т.к. работает на движке IE), из кода выделяются ссылки на картинки, затем эти картинки скачиваются и кладутся в папку рядом со страницей.
 
 Вот такая прога. Могу подарить как наглядное пособие. С исходником, конечно.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Kyran29 (статус: Посетитель), 4 апреля 2010, 20:29 [#8]:Такова сайта я не знаю ! И знать не хочу ! А прогу - Подари как наглядное пособие.
 isxodniki@mail.ru
 |  
|   | min@y™ (статус: Доктор наук), 4 апреля 2010, 20:38 [#9]: Цитата (Kyran29): И знать не хочу ! Ути-пути, какие мы нежные...
 Прогу выслал. Знакомый адрес, кстати.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Паровоз (статус: 10-ый класс), 8 апреля 2010, 13:33 [#10]:Вопрос поставлен настолько широко, что ответить на него конкретно трудно. Попробуйте этот код: 
 uses
  mshtml,
  ActiveX;
procedure TForm1.Button1Click(Sender: TObject);
var
  doc: IHTMLDocument2;
  v: Variant;
  list: TStringList;
begin
  list:=TStringList.Create;
  list.LoadFromFile('......');//имя файла с HTML кодом для парсинга
  v:=VarArrayCreate([0,0],varVariant);
  v[0]:=list.Text;
  doc:=CoHTMLDocument.Create as IHTMLDocument2;
  doc.write(PSafeArray(TVarData(v).VArray));
  Memo1.Clear;
  Memo1.Lines.Add(doc.body.innerText);
  doc.close;
  list.Free;
end; |  
|   | Kyran29 (статус: Посетитель), 8 апреля 2010, 14:21 [#11]:Спасибо Паровоз: Все работает!
 |  
|   | Паровоз (статус: 10-ый класс), 8 апреля 2010, 21:08 [#12]:Раз код подошел пишу его в ответ. |  
|   | Kyran29 (статус: Посетитель), 9 апреля 2010, 04:48 [#13]:Вот кому интересно Немного переделал
 
 
 uses  mshtml, ActiveX, IdHTTP;
 
 
procedure TForm1.FormCreate(Sender: TObject);
const
 URL = 'https://expert.delphi-int.ru/question/3969/';
begin
   Edit1.Text := URL;
    end;
 
procedure TForm1.Button1Click(Sender: TObject);
 var
  doc: IHTMLDocument2;
   v: Variant;
    list: TStringList;
 begin
       Form1.WindowState := wsMinimized;
     Application.Title := ' Ждемс...';
  Memo1.Lines.Add(Form1.IdHTTP1.Get(Edit1.Text));
   list:=TStringList.Create;
     list.Add(Memo1.Text);
      v:=VarArrayCreate([0,0],varVariant);
       v[0]:=list.Text;
      doc:=CoHTMLDocument.Create as IHTMLDocument2;
   doc.write(PSafeArray(TVarData(v).VArray));
    Memo1.Clear;
     Memo1.Lines.Add(doc.body.innerText);
       doc.close;
        list.Free;
       Application.ProcessMessages();
     Form1.Caption := ' Упс...  Готово';
     Application.Title := 'Готово';
   Form1.WindowState := wsNormal;
 end;Вопрос решен. Спасибо всем.
 |  
|   | sevalx (статус: Посетитель), 15 августа 2010, 08:33 [#14]:Если URL = 'http://www.tietoy.org/pages.php?tabid=100';
 
 при выполнении doc.write(PSafeArray(TVarData(v).VArray));
 открывается браузер Internet Explorer... как это запретить???
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |