Konuyu Paylaş : facebook gplus twitter

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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol+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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(12-04-2017, Saat: 14:48)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol+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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(12-04-2017, Saat: 14:54)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMü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 (Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol) ve benzer şekilde katkıları olan tüm Delphi Can'lara teşekkür ederim.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]-Başka Uygulamadaki MDIChild Form Handle Alma hi_selamlar 9 221 29-06-2018, Saat: 09:52
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ]-cxDBPivotGrid Seçili Satır Alan Değeri Alma hi_selamlar 2 117 21-06-2018, Saat: 10:40
Son Yorum: hi_selamlar
  JSON Veri Okuma elixir84 12 408 12-06-2018, Saat: 13:50
Son Yorum: elixir84
  Çok Kullanıcılı Veri Tabanı Uygulaması 3ddark 4 227 08-06-2018, Saat: 12:46
Son Yorum: uparlayan
  Mutex ile birden fazla kullanıcıda aynı programın çalışmasını nasıl engelleriz masteryoda 5 246 16-05-2018, Saat: 09:00
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi