Спарсить информацию со страницы [DELPHI]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by TENMAX, 21 May 2011.

  1. Vlad3d

    Vlad3d Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    47
    Likes Received:
    54
    Reputations:
    -1
    Code:
    var
    balance:string;
    source:TStringList;
    
    
    source:=TStringList.create; 
    source:=idHttp1.get('site.ru'); //вместо site.ru адрес страницы с балансом
    balance:=copy(pos('style="color: red">',source.text)+19,20);
    delete(balance, pos('</td>', balance),length(delete)); //в переменной balance будет находиться баланс
    
    писал в блокноте, так что могут быть ошибки
     
  2. kakeolala

    kakeolala Banned

    Joined:
    13 Jul 2010
    Messages:
    118
    Likes Received:
    2
    Reputations:
    0
    вот махом набросал регулярку тут:
    Code:
    <td class="td_comm td_15px td_bold"([^>]+)">([^<]+)</td>
    reg.match[2] - и будет вам нужные параметры
     
  3. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Data, X:TStringList;
    pos1,i:integer;
    y: string;
    begin
    Data:=TStringList.Create;
    X:=TStringList.Create;
    try
    Data.Add('login=' + Edit1.Text);
    Data.Add('password=' + Edit2.Text);
    X.Text:=IdHTTP1.Post('http://stat.chehov.net/', Data);
    y:=X.Text;
    if Pos('http://stat.chehov.net/support/index.html', X.Text)>0 then
    ShowMessage('Àâòîðèçàöèÿ ïðîøëà óñïåøíî!')
    else
    ShowMessage('Íåïðàâèëüíûé ëîãèí èëè ïàðîëü!');
    finally
    Data.Free;
    X.Free;
    begin
    Memo1.Lines.Add(X.Text);
    for i := 0 to Memo1.Lines.Count - 1 do begin
    pos1:=Pos('<td class="td_comm td_15px td_bold" style="color:', Memo1.Lines.Strings);
    if (pos1 > 0) then
    Edit1.Text:=Memo1.Lines.Strings;
    end;

    end;
    end;
    end;

    end.

    ////////////////////
    не выносит в мемо..
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5

    a Memo1.WordWrap:=false не пробовал делать :confused: :D :D :D
     
  5. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5

    ну если поставил размеры мемо такие как я сказал , оно должно тебе в едит выводить:
    <td class="td_comm td_15px td_bold" style="color: red">127,94</td>
     
  6. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5

    поставил такие размеры, но не выводит, ща скрин сделаю, что пишет.
     
  7. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5

    НУ не пробывал :) спасиб , буду иметь ввиду))
     
  8. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    http://i061.radikal.ru/1105/82/9fe4c3bf70e8.jpg
     
  9. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    Даже не знаю что за хрень..
     
  10. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    Убери с кода : X.Free;
     
  11. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    не, всё исправил, ошибка была в расположении присвоения к мемо, кода.
     
  12. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    теперь в едит копируется:
    <td class="td_comm td_15px td_bold" style="color: red">127,94</td>

    с пробелами впереди.
    надо просто 127,94.
    это можно сделать?
     
  13. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    ну ты леньтяй :) щас сделаю:)
     
  14. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    да извини, если не хочешь можешь не делать)

    просто с таким никогда не работал.
    чтоб я понял мне примеры нужны, но таковых не нашел.
     
  15. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    balance:=Memo1.Lines.Strings;
    delete(balance, pos('<td class="td_comm td_15px td_bold" style="color:', balance),55);
    delete(balance, pos('</td>', balance),5);
    Edit1.Text:=balance;

    поймешь что куда добавить??
     
    1 person likes this.
  16. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5


    щас разберусь, спасибо тебе огроменное)) +++
     
  17. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    Не за что :) все я ушел бухать:) Удачи:)
     
  18. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    всё гуд, токо пробелы в начале , и их куча, ща сам конечно попробую что нибудь придумать...
     
  19. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    balance:=trim(balance);