В этой статье, я Вам хотел бы рассказать как можно, но ненужно, это конечно шутка, метод этот, что я предложу не сильно надежный и быстрый, но все же, как вариант, сначала попробуем этим методом обычные данные пропарсить, затем этим методом html-страницу пропарсить, ну а напоследок, я Вам покажу как парсить страницы с помощью регулярных выражений и тогда вы найдете разницу и даже ее почувствуете. Ну а теперь вернемся к нашим «баранам», а точнее к нашему методу парсинга данных. Метод этот заключается удалении ненужных данных и все. В данном методе мы затроним такие методы как:
  • delete
  • pos
Можно и без них обойтись, а воспользоваться функцией copy, но посмотрим так и так.
теперь заполним переменную данными (текстом), который мы затем будем парсить.
var
StrPars:WideString;
begin
StrPars:='Этот текст мы будем парсить, а вот этот нам надо получить, пропарсили и забыли';
end;
Так переменная у нас текстом нужным заполнена теперь приступаем к парсингу. Нам надо определиться до чего будем парсить и после чего. Соответственно до «запятой» и до «запятой» нам надо получитьс данные. Вот это примерно так будет выглядеть в Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
StrPars:WideString;
begin
StrPars:='Этот текст мы будем парсить, а вот этот нам надо получить, пропарсили и забыли';
Delete(StrPars,1,pos(',',StrPars)+1);
Delete(StrPars,pos(',',StrPars),length(StrPars));
ShowMessage('ParsText='+StrPars);
end;
Вот что я и говорил, удаляем до запятой данные, и удаляем после запятой данные. Вот и у нас получиться текс нужный, как это можно реализовать с помощью copy, смотрим чуть-чуть ниже
procedure TForm1.Button2Click(Sender: TObject);
var
StrPars,St:WideString;
begin
StrPars:='Этот текст мы будем парсить, а вот этот нам надо получить, пропарсили и забыли';
Delete(StrPars,1,pos(',',StrPars)+1);
st:=copy(StrPars,1,pos(',',StrPars)-1);
ShowMessage('ParsText='+St);
end;
Но здесь мы все равно используем delete. Это можно красиво организовать как функцию, вынести в отдельный модуль и использовать в своих проектах, вот организована наша функция будет примерно так
function Pars(st,st_begin,st_end:WideString):WideString;
begin
if pos(st_begin,st)<>0 then
Delete(st,1,pos(st_begin,st)+length(st_begin))
else
begin
Pars:='not str pars';
exit;
end;
if pos(st_end,st)<>0 then
Delete(st,pos(st_end,st),length(st))
else
begin
Pars:='not str pars';
exit;
end;
Pars:=st;
end;
Использовать данную функцию можно так
Caption:=Pars('вот эту строку мы парсим, а это нет','вот эту строку ',', а это нет');
В следующей статье по парсингу мы рассмотрим парсинг html-страниц, а затем парсинг страниц, используя регулярные выражения.
Хочу заметить, что преддверии 8-го марта, каждый мужчина, молодой человек сталкивается с проблемой подарка. А хочу сказать, что фото рамка отличный подарок на 8 марта, в которую Вы также сможете вставить хорошую фотографию и сделать отличные воспоминания своей девушке или женщине.
Исходники можно скачать тут
Автор статьи - Andrey53

Метки: , , , ,




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

  1. Улучшенная функция парсинга

    // Uses StrUtils;

    // Pars Ultimate by Alex_pac
    function Pars(const T_, _T, Text : string): string;
    var a, b:integer;
    begin
    Result := »;
    if (T_=») or (Text=») or (_T=») then Exit;
    a:=pos(T_, Text);
    if a=0 then exit;
    b:=posEx(_T,Text,a);
    if b>0 then
    Result:=Copy(Text, a+Length(T_), b-a-Length(T_));
    end;

  2. Спасибо!!! большое человеческое спасибо автору коды!!!

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

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

*