Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Birden fazla veri alma
#1
Selam;

Maç kolikten takım skorlarını çekiyorum, skorla beraber takımların adını da almak istediğimde birince takımın adını alıyorum fakat ikici takım adını alamadım acaba nereden hata yapıyorum?

iki takında adı aynı class içinde <div class="match-statistics-logo-text"> 

function GolParse(Source, EvSahibi, Deplasman, StrEv, StrDep: String): String;
begin
  Delete(Source, 1, Pos(EvSahibi, Source) + Length(EvSahibi) - 1);
  Result := Copy(Source, 1, Pos(Deplasman, Source) - 1);
  Delete(Source, 1, Pos(StrEv, Source) + Length(StrEv) - 1);
  Form1.caption := Copy(Source, 1, Pos(StrDep, Source) - 1);
end;


procedure SkorKontrol.Execute;
var
  I: Integer;
  Http: TIdHTTP;
  Mackolik: String;
  URL, Kimler, Goller, EvGol, DepGol: String;
begin
  With Form1 do
    try
      Http := TIdHTTP.Create(Nil);
      Mackolik := 'http://www.mackolik.com/Mac/';
      try
        URL := Http.Get(Mackolik + MacIdNo.Text + '/');

        Goller := Trim(GolParse(URL,
          '<div class="match-score" id="dvScoreText">', '</div>',
          '<div class="match-statistics-logo-text">', '</div>'));

        EvGol := Trim(Copy(Goller, 1, 1));
        DepGol := Trim(Copy(Goller, 5, 1));
        EvDepLB.caption := EvGol + ' - ' + DepGol;
        MesajLB.caption := 'Skor alındı...';
      finally
        Http.Free;
      end;
    except
      MesajLB.caption := 'Skor alınamadı işlem tekrar denenecek...';
    end;
end;
Cevapla
#2
uses
 regularexpressions;


procedure TForm1.btnGitAraBulGetirSaclariniYolGetirClick(Sender: TObject);

 Function Explode(AValue, AStart, AEnd : String ): String;
 begin
    Delete(AValue, 1, pos(AStart, AValue) + Length(AStart)-1);
    Result := Copy(AValue, 1, Pos(AEnd, AValue)-1);
 end;

const
HomeStart  = '<a class="left-block-team-name"';
AwayStart  = '<a class="r-left-block-team-name"';
TeamEnd    = '</a>';
ScoreStart = '<div class="match-score" id="dvScoreText">';
ScoreEnd   = '</div>';
var
tempStr    : String;
HomeTeam,
AwayTeam,
Score,
HomeScore,
AwayScore  : String;
begin
Memo1.Clear;
try
  tempStr := IdHTTP1.Get('http://www.mackolik.com/Mac/2772988/');
  HomeTeam := Explode(tempStr, HomeStart, TeamEnd).Trim;
  HomeTeam := TRegEx.Replace(HomeTeam, '.+>', '', [roIgnoreCase]);
  AwayTeam := Explode(tempStr, AwayStart, TeamEnd).Trim;
  AwayTeam := TRegEx.Replace(AwayTeam, '.+>', '', [roIgnoreCase]);

  Score    := Explode(tempStr, ScoreStart, ScoreEnd).Trim;
  HomeScore:= Copy(Score, 1, pos('-', Score)-1).Trim;
  AwayScore:= Copy(Score, pos('-', Score)+1, 50).Trim;
finally
 with Memo1.Lines do
 begin
  Add('Home  : ' + HomeTeam );
  Add('Away  : ' + AwayTeam );
  Add('Score : ' + Score);
  Add('HomeScore : ' + HomeScore);
  Add('AwayScore : ' + AwayScore);
 end;
end;
end;
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#3
+1
GitAraBulGetirSaclariniYolGetir için Big Grin
There's no place like 127.0.0.1
WWW
Cevapla
#4
(12-04-2017, Saat: 14:48)SimaWB Adlı Kullanıcıdan Alıntı: +1
GitAraBulGetirSaclariniYolGetir için Big Grin

Mümkün mertebe kodlarımın içinde en az bir tane absürt isim oluyor Big Grin
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#5
(12-04-2017, Saat: 14:54)barutali Adlı Kullanıcıdan Alıntı:
(12-04-2017, Saat: 14:48)SimaWB Adlı Kullanıcıdan Alıntı: +1
GitAraBulGetirSaclariniYolGetir için Big Grin

Mümkün mertebe kodlarımın içinde en az bir tane absürt isim oluyor Big Grin

Tek kelimeyle harika... sadece +4 verebildim bence +100000000 seçenek olmalı....
Cevapla
#6
Hevesinizi kırmak gibi olmasın ama, bende sizin gibi birçok idda sitesinde maç sonuçlarını alan program yazayım dedim 1 ay uğraştım , siteleri tek tek gezip kodlarını inceleyip parse ettirdim. Sonra bir baktım site 2 hafta sonra kaynak kodunda ilgili div adını değiştirmiş yeniden düzenledim. Sonra bu iş adet haline geldi ve yoruldum Smile))) Diyeceğim şu ki kaynak kodu parse etmek ile başa çıkılmıyor. Size tavsiyem parse şeklinizi , şu divle bu divi bul arasını al şeklinde değilde,  verdiğiniz div class adını veya idsini aratarak yapın böylece diğer işlemlerden kurtulmuş olursunuz. Tabi bunun için idhttp değilde gizli webbrowser kullanmanız gerek Smile))
Eski parse şeklim
 procedure bilyoner_banko;  ///BANKO
Const
 blokbasi  ='<DIV id=popular_container';   bloksonu ='<DIV class="row footer">';
 silinecek ='<DIV class=odd>';
 varsa     ='<DIV class=match>';
 aranacak  ='<DIV id=kupon_ismi>BANKO KUPONU</DIV>';
Var
strIcerik, strBlok, tahminturu,kodu,takimadi,tahmini: String;

begin

     URL:='http://www.bilyoner.com/';
     Sayfada_Ara:=aranacak;
     if Form1.WebBrowser1.ReadyState <> READYSTATE_UNINITIALIZED then Form1.WebBrowser1.Stop;
     Form1.WebBrowser1.Navigate( URL );
     while Form1.WebBrowser1.ReadyState <> READYSTATE_COMPLETE  do Application.ProcessMessages;

     Form1.WebBrowser1.OleObject.Document.GetElementByID('2Pg').Click;
     while NOT Pos( aranacak, Form1.WebBrowser1.OleObject.Document.Body.InnerHTML ) > 0  do Application.ProcessMessages;

     IF  Pos( aranacak, Form1.WebBrowser1.OleObject.Document.Body.InnerHTML ) > 0 then begin
         strIcerik:=Form1.WebBrowser1.Oleobject.Document.Body.InnerHTML;
         strBlok := blokSec(strIcerik,blokbasi,bloksonu);
         Delete(strBlok, 1, pos(varsa, strBlok)-1);
         while Pos( varsa, strBlok ) > 0 do
         begin
         tahminturu :=blokSec(strBlok,'<DIV class=type><SPAN class=OddTypes>','<');
         takimadi   :=blokSec(strBlok,'<DIV class=teams>','<');
         kodu       :=blokSec(strBlok,'<DIV class=code>','<');
         tahmini    :=blokSec(strBlok,'<DIV class=choice>','<');
         Delete(strBlok, 1, pos(silinecek, strBlok) + Length(silinecek)-1);
         Form1.Memo2.Lines.Add(kodu+'--'+takimadi+'--'+tahminturu+'--'+tahmini);
         end; // while

     end;
end;


Sonra bıkıp yeni geliştirdiğim yöntem 
////////////////////////////////////////////////////////////////////////
procedure Getir_idda_Prg(const kodu,adi: string);

var
 Doc:IDispatch;
 Document: IHTMLDocument2;
 Body: IHTMLElement2;
 Tags: IHTMLElementCollection;
 Tag: IHTMLElement;
 I,k: Integer;
 mackodu,takimadi,tahminleri, oranlar : string;
begin
                     Doc:=Form1.WebBrowser1.Document;
                    // Form1.Memo1.Clear;
                     if not Supports(Doc, IHTMLDocument2, Document) then exit;
                     if not Supports(Document.body, IHTMLElement2, Body) then exit;
                     Tags := Body.getElementsByTagName('*');
                     for I := 0 to Pred(Tags.length) do
                     begin
                       Tag := Tags.item(I, EmptyParam) as IHTMLElement;

                       if AnsiSameText(Tag._className, kodu) then
                       begin
                            mackodu:=Tag.innerText;
                       end;
                       if AnsiSameText(Tag._className, adi) then
                       begin
                               takimadi:=Tag.innerText;
                        if (mackodu<>'')and (takimadi<>'') then begin
                        form1.Table_iddaprg.Append;
                         form1.Table_iddaprgKodu.AsString      := mackodu;
                         form1.Table_iddaprgTakim_Adi.AsString := takimadi;
                         form1.Table_iddaprg.Refresh;

                        Form1.Memo1.Lines.Add(mackodu +'  '+ takimadi);
                        end;
                       end;

  end;

end;


////////////////////////////////////////////////////////////////////////
Cevapla
#7
(13-04-2017, Saat: 01:24)serhat Adlı Kullanıcıdan Alıntı:
(12-04-2017, Saat: 14:54)barutali Adlı Kullanıcıdan Alıntı: Mümkün mertebe kodlarımın içinde en az bir tane absürt isim oluyor Big Grin

Tek kelimeyle harika... sadece +4 verebildim bence +100000000 seçenek olmalı....

Bilginin kıymeti, puanla ölçülemez tabi. 
Bildiğini, bilmeyenlerden saklamayanların kıymeti ise paha biçilemez.  
Sizin vesilenizle Ali Bey (barutali) ve benzer şekilde katkıları olan tüm Delphi Can'lara teşekkür ederim.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  IEC 61850 Potokolünden veri alma shooterman 1 413 14-03-2024, Saat: 11:38
Son Yorum: shooterman
  Veri Tabanına Kontrollü Kayıt Yaptırma bünyamin68 15 617 08-03-2024, Saat: 00:06
Son Yorum: TuncayDelphi
  Problem - ZKTeco Cihazlardan Anlık Veri Alma mad85 16 7.951 25-12-2023, Saat: 11:35
Son Yorum: osiso
  [ÇÖZÜLDÜ]Firebase Bearer Token Alma shooterman 8 620 05-12-2023, Saat: 12:17
Son Yorum: shooterman
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 4.300 08-11-2023, Saat: 00:06
Son Yorum: berkan



Konuyu Okuyanlar: 1 Ziyaretçi