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
  Accsess te tek tabloya girdiğim veri diğerinde de gözüksün Matesh 2 92 22-03-2018, Saat: 16:29
Son Yorum: Matesh
  Birden çok şartın sağlanması Lord_Ares 10 281 22-03-2018, Saat: 00:28
Son Yorum: Lord_Ares
  Ip cameradan goruntulerini alma klavye 8 219 21-12-2017, Saat: 08:05
Son Yorum: Fesih ARSLAN
  Media player hızlı ileri alma Lord_Ares 2 182 29-11-2017, Saat: 01:26
Son Yorum: Lord_Ares
  Birden fazla database oluşturma dilo 2 213 28-11-2017, Saat: 16:54
Son Yorum: hyperxman



Konuyu Okuyanlar: 1 Ziyaretçi