Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 969

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!

В этом фрагменте кода я сохраняю страничку в файл.

Но вопрос заключается в следующем:
По событию OnClick у Button1 вывести в поле Memo текст веб-странички, не исходный текст с тегами, а тот текст, что виден пользователю в окне браузера. Только текст.
Можно ли как то это реализовать ?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. uses URLMon;
  2.  
  3. function DownloadFile(SourceFile, DestFile: string): Boolean;
  4. begin
  5. try
  6. Result:=UrlDownloadToFile(nil,PChar(SourceFile),PChar(DestFile),0,nil)=0;
  7. except
  8. Result := False;
  9. end;
  10. end;
  11.  
  12.  
  13. procedure TForm1.FormCreate(Sender: TObject);
  14. begin
  15. Edit1.Text := 'http://expert.delphi.int.ru';
  16. Edit2.Text := 'Delphi.int.ru Expert.html';
  17. end;
  18.  
  19.  
  20. procedure TForm1.Button1Click(Sender: TObject);
  21. begin
  22. DownloadFile(Edit1.Text,Edit2.Text);
  23. Application.ProcessMessages();
  24.  
  25. end;


Kyran29 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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™

min@y™ (статус: Доктор наук), 4 апреля 2010, 14:01 [#1]:

Парсер.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kyran29

Kyran29 (статус: Посетитель), 4 апреля 2010, 14:20 [#2]:

Других вариантов нет ?
Егор

Егор (статус: 10-ый класс), 4 апреля 2010, 14:30 [#3]:

а чем webbrowser не нравится?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Kyran29

Kyran29 (статус: Посетитель), 4 апреля 2010, 14:34 [#4]:

webbrowser нравится, вопрос как реализовать ?
min@y™

min@y™ (статус: Доктор наук), 4 апреля 2010, 14:51 [#5]:

TWebBrowser - ацтой. Руками проще.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kyran29

Kyran29 (статус: Посетитель), 4 апреля 2010, 19:30 [#6]:

Уважаемые эксперты!

Это все ? Вопрос можно закрыть ?
min@y™

min@y™ (статус: Доктор наук), 4 апреля 2010, 20:16 [#7]:

Цитата (Kyran29):

Это все ? Вопрос можно закрыть ?

Ты вот такой сайт знаешь? Мы раньше его читали, когда на работе было нечем заняться. Интернет у нас был строго только на одном компутере, который стоял в строго опечатанном закрытом кабинетике. Чтобы попасть в этот кабинетик хотя бы на часок, надо было написать служебную записку и оббегать с ней несколько начальников, собирая их авторгафы. Ну так вот, я написал прогу, которая качает инфу (страницы, картинки и пр.) с этого сайта и зарядил ею тот самый комп. Закачка и парcинг HTML происходит там без всяких TWebBrowser'ов (это ацтой, т.к. работает на движке IE), из кода выделяются ссылки на картинки, затем эти картинки скачиваются и кладутся в папку рядом со страницей.

Вот такая прога. Могу подарить как наглядное пособие. С исходником, конечно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kyran29

Kyran29 (статус: Посетитель), 4 апреля 2010, 20:29 [#8]:

Такова сайта я не знаю ! И знать не хочу !
А прогу - Подари как наглядное пособие.
isxodniki@mail.ru
min@y™

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

Kyran29 (статус: Посетитель), 8 апреля 2010, 14:21 [#11]:

Спасибо Паровоз:
Все работает!
Паровоз

Паровоз (статус: 10-ый класс), 8 апреля 2010, 21:08 [#12]:

Раз код подошел пишу его в ответ.
Kyran29

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

sevalx (статус: Посетитель), 15 августа 2010, 08:33 [#14]:

Если
URL = 'http://www.tietoy.org/pages.php?tabid=100';

при выполнении doc.write(PSafeArray(TVarData(v).VArray));
открывается браузер Internet Explorer... как это запретить???

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.03 сек.