В этом небольшом уроке я покажу вам как можно легко парсить все ссылки на web странице.
Итак, открываем Delphi и создаем новый проект.
Лично я для данного урока использовал Delphi 2010,
Поэтому, если у вас на компьютере установлена другая версия, возможно придется самостоятельно немного поправить код.
Для начала в раздел uses подключаем следующие библиотеки:
mshtml, ActiveX, COMObj, IdHTTP, idURI;
Создадим новую процедуру при помощи которой наша программа будет парсить ссылки. После ключевого слова public напишем следующий код:
procedure ExtractLinks (const url: String; const strings: TStrings) ;
Далее нажимаем уже знакомую нам комбинацию клавиш CTRL+Shift+C в результате чего Delphi сгенерирует нам шаблон для будущей процедуры.
Объявляем локальные переменные
var
iDoc : IHTMLDocument2;
strHTML : string;
v : Variant;
x : integer;
links : OleVariant;
docURL : string;
URI : TidURI;
aHref : string;
idHTTP : TidHTTP;
В теле процедуры тоесть между Begin ... end пишем следующий код:
strings.Clear;
URI := TidURI.Create(url) ;
try
docURL := 'http://' + URI.Host;
if URI.Path <> '/' then docURL := docURL + URI.Path;
finally
URI.Free;
end;
iDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
try
iDoc.designMode := 'on';
while iDoc.readyState <> 'complete' do Application.ProcessMessages;
v := VarArrayCreate([0,0],VarVariant) ;
idHTTP := TidHTTP.Create(nil) ;
try
strHTML := idHTTP.Get(url) ;
finally
idHTTP.Free;
end;
v[0]:= strHTML;
iDoc.write(PSafeArray(System.TVarData(v).VArray)) ;
iDoc.designMode := 'off';
while iDoc.readyState<>'complete' do Application.ProcessMessages;
links := iDoc.all.tags('A') ;
if links.Length > 0 then
begin for x := 0 to -1 + links.Length do
begin
aHref := links.Item(x).href;
if (aHref[1] = '/') then
aHref := docURL + aHref
else if Pos('about:', aHref) = 1
then aHref := docURL + Copy(aHref, 7, Length(aHref)) ;
strings.Add(aHref) ;
end;
end;
finally
iDoc := nil;
end;
Так с основными приготовлениями мы закончили, и очень скоро наш робот игрушка покажет себя в действии. А сейчас давайте кинем на форму 3 компонента с закладки Standard: Edit, Button, Memo
Если кто не понял, в компонент Edit мы будем вводить нужный URL адрес, а после нажатия на кнопку в memo будут отображаться все ссылки с указанной Web страницы.
Напоследок, создадим обработчик событий OnClick на кнопке, в котором вызовем нашу процедуру с нужными параметрами (между begin ... end пишем)
ExtractLinks(Edit1.Text, memo1.Lines);
Вот в принципе и все запускаем и компилируем проект.
P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.
Участвовать в конкурсах и постепенно вливаться в нашу команду ?!
Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
Нас уже больше чем 10000 человек ! Подписаться
Похожие материалы
- Зеркало интернета или слежка через Web камеру
- Delphi получаем ссылки со страницы при наведение курсора
- Работа с udp протоколом, передача данных. Delphi исходник
- Слежка за директорией на диске
- Делфи исходник - игра Реверси
Последние из рубрики
- Delphi работа с vkontakte API
- Delphi работа с API Вконтакте (vkontakte) часть 2
- Delphi видео урок - исходный код в проводнике Windows