|
Вопрос # 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... как это запретить???
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|