В части мы рассмотрели как можно пропарсить данные, не используя регулярные выражения. Мы даже написали свою функцию парсинга данных, которую можно будет использовать в данной статье, но я обойдусь без нее, а Вы сможете ею воспользоваться, если конечно захотите. Так вот в чем суть данного вопроса, мы в данной статье пропарсим данные из html-страниц, а именно получим адресс какой-нибудь ссылки, которая присутствует на странице. Это я все веду к тому, что будет статья про то, как получить капчу с какого-нибудь сайта, и при этом нам понадобиться парсинг страниц. Но урок по парсингу страниц не закончатся, не забыли про регулярные выражения? их плюсы, и как использовать в Delphi-проектах. Ну что теперь приступим, подготовим нашу форму и на форму «поставим» следующие компоненты:
- TidHTTP
- TidAntiFreeze
- TButton
Думаю вы все знаете уже где находятся данные компоненты. Если нет, то напомню только про 2
- TIdHTTP — Indy Clients
- TidAntiFreeze — Indy Misc
Так все готова теперь можно приступать. Для начала нам нужно получить текст самой страницы, для этого мы и будем использовать TidHTTP, на событие Button1 - OnClick напишем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
St:WideString;
begin
try
St:=IdHTTP1.Get('https://devdelphi.ru/?p=30');
ShowMessage(St);
except
on e:Exception do
end;
end;
Здесь мы получаем код страницы, и выводим сообщение, увидем весь html-код нашей страницы.
Далее пропарсим нашу страницу, найдем ссылку вот эту - https://devdelphi.ru/?p=16, для этого дополним наш код
procedure TForm1.Button1Click(Sender: TObject);
var
St:WideString;
begin
try
St:=IdHTTP1.Get('https://devdelphi.ru/?p=30');
Delete(St,1,pos('<span style="color: #0000ff;"><a href="',St)+length('<span style="color: #0000ff;"><a href="')-1);
Delete(St,pos('">',St),length(St));
ShowMessage(St);
except
on e:Exception do
end;
end;
То есть, парсинг мы уже проходили, и тут тоже особо проблем не должно быть. Просто ищем уникальное значение до какого мы можем пропарсить и после, то есть нам надо получить данные исходя из уникальных промежутков, в которых находятся наши данные. Исходники скидывать не буду, так как тут ничего сложно, можете сами написать что-нибудь на подобии сборщик всех внутренних ссылок с определенной страницы сайта. Это Вы сможете сделать зациклить все или используя метки. Ждем статью о парсинге с помощью регулярных выражений и получени каптчи в TImage.