В части мы рассмотрели как можно пропарсить данные, не используя регулярные выражения. Мы даже написали свою функцию парсинга данных, которую можно будет использовать в данной статье, но я обойдусь без нее, а Вы сможете ею воспользоваться, если конечно захотите. Так вот в чем суть данного вопроса, мы в данной статье пропарсим данные из 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('http://devdelphi.ru/?p=30');
ShowMessage(St);
except
on e:Exception do
end;
end;

Здесь мы получаем код страницы, и выводим сообщение, увидем весь html-код нашей страницы.

Далее пропарсим нашу страницу, найдем ссылку вот эту - http://devdelphi.ru/?p=16, для этого дополним наш код

procedure TForm1.Button1Click(Sender: TObject);
var
St:WideString;
begin
try
St:=IdHTTP1.Get('http://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.

Хочу заметить, что в настоящее время очень популярны пластиковые окна, которые кроме того, что отличаются красивым дизайном, так и зимой утепляют очень хорошо, летом отлично пропускают холодный воздух, а самое главное, что не пропускают звуковые шумы, Вы всегда сможете отдыхать в спокойствии.
Автор статьи - Andrey53

Метки: , , , , ,




К записи “Парсинг данных. Часть 2” оставлено комментариев: 3.

  1. End:

    Здравствуйте Andrey53, у меня возникла токая проблема, при загрузке html страницы в memo отображается " заместо «, что
    делать??? извеняюсь если не туда написал, просто незнал куда писать….

  2. End:

    Здравствуйте Andrey53, у меня возникла токая проблема, при загрузке html страницы в memo отображается " заместо " что делать??? извеняюсь если не туда написал, просто незнал куда писать….

  3. Andrey53:

    Здравствуйте, как я понял — это необходимо Вам вместо » — получить «, если так, то предлагаю делать замену » путем кода символа «, делается это так

    procedure TForm1.Button1Click(Sender: TObject);
    var
     c:integer;
    begin
       c:=171;
       ShowMessage(chr(c));
    end;

    То есть заменять символ — «, на chr(c)

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*