Webden Bir Alandan Veri Çekmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Webden Bir Alandan Veri Çekmek
Merhaba.
Daha önce merkez bankasından kur çekimi gibi örnekler var fakat hepside bozulmuş durumda ve bir türlü başaramadım.
Örnek olarak bir web sayfasındaki ("https://www.binance.com/tr/trade/BNB_USDT") alanlardan "24S En Yüksek" alanındaki değeri programda Edit1 alanında görmek istiyorum.
Bunu nasıl yapabilirim?
Daha önce merkez bankasından kur çekimi gibi örnekler var fakat hepside bozulmuş durumda ve bir türlü başaramadım.
Örnek olarak bir web sayfasındaki ("https://www.binance.com/tr/trade/BNB_USDT") alanlardan "24S En Yüksek" alanındaki değeri programda Edit1 alanında görmek istiyorum.
Bunu nasıl yapabilirim?
- Dosya ekleri
-
- binance.png (7.51 KiB) 5301 kere görüntülendi
Re: Webden Bir Alandan Veri Çekmek
Görebildiğim kadarıyla API'si mevcut. API'leri kullanmanızı öneririm: https://binance-docs.github.io/apidocs
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
Değerli üstadım Delphi'de her hangi bir apinin kullanımına örnek verebilir misiniz? Ben bu konuda hiç iş yapmadım
Re: Webden Bir Alandan Veri Çekmek
Api işlemleri genellikle bir servis sağlayıcıdan başkasına değişir.
Yukarıdaki firma için aşağıdakiler gerekli:
- Ücretsiz üye olacaksınız.
- 2FA (İki faktörlü doğrulama) özelliğini açacaksınız. Ben bunu yaparken Google Authenticator kullanmanızı tavsiye ederim. Aksi halde cep telefonu numaranızı bildirmeniz gerekir.
- Hesabınıza giriş yaptıktan sonra fare imlecini sağ üst kısımdaki zil resmi solundaki figürü üzerine getirip api yönetimi seçeneğine girin.
- Api key için bir isim belirleyerek oluştur butonunu tıklayın.
- E-mail adresinizi kontrol edin. Gelen e-maili onaylayın.
- Tekrar api yönetimi kısmına girdiğinizde erişim için gerekli bilgilere ulaşmış olacaksınız.
Bundan sonra ilgili döküman ve örnek Github kodlarını inceleyerek ilerlemeniz gerekecektir. Görüldüğü kadarıyla sistem json iletişimi kullanmakta.
Eğer uygulamanızı satmayı planlıyor iseniz müşterilerinizin her birinin kendilerine apikey edinmiş olduğundan emin olmanızda fayda var. Genellikle ücretsiz kullanımlı hesapların api key erişimleri sınırlandırılıyor. Misal günlük maksimum 100 istek yapabiliyorsunuz.
Yukarıdaki firma için sınırlama var mı? Var ise sınırları nelerdir bilemiyorum.
Yukarıdaki firma için aşağıdakiler gerekli:
- Ücretsiz üye olacaksınız.
- 2FA (İki faktörlü doğrulama) özelliğini açacaksınız. Ben bunu yaparken Google Authenticator kullanmanızı tavsiye ederim. Aksi halde cep telefonu numaranızı bildirmeniz gerekir.
- Hesabınıza giriş yaptıktan sonra fare imlecini sağ üst kısımdaki zil resmi solundaki figürü üzerine getirip api yönetimi seçeneğine girin.
- Api key için bir isim belirleyerek oluştur butonunu tıklayın.
- E-mail adresinizi kontrol edin. Gelen e-maili onaylayın.
- Tekrar api yönetimi kısmına girdiğinizde erişim için gerekli bilgilere ulaşmış olacaksınız.
Bundan sonra ilgili döküman ve örnek Github kodlarını inceleyerek ilerlemeniz gerekecektir. Görüldüğü kadarıyla sistem json iletişimi kullanmakta.
Eğer uygulamanızı satmayı planlıyor iseniz müşterilerinizin her birinin kendilerine apikey edinmiş olduğundan emin olmanızda fayda var. Genellikle ücretsiz kullanımlı hesapların api key erişimleri sınırlandırılıyor. Misal günlük maksimum 100 istek yapabiliyorsunuz.
Yukarıdaki firma için sınırlama var mı? Var ise sınırları nelerdir bilemiyorum.
Re: Webden Bir Alandan Veri Çekmek
Biraz göz gezdirince bazı bilgilerin ücretsiz ve apikey ve/veya secretkey olmadan okunmasına izin veren bir api yapısı olduğunu gördüm.
Ekte BTCUSDT fiyatını okuyan örnek uygulama bulabilirsiniz. Uygulama Delphi 10.3.3 uyumludur.
Oku butonunu tıkladığınızda en güncel fiyat bilgisini okumakta ve gelen json bilgisini ayıklamaktadır.
Ekte BTCUSDT fiyatını okuyan örnek uygulama bulabilirsiniz. Uygulama Delphi 10.3.3 uyumludur.
Oku butonunu tıkladığınızda en güncel fiyat bilgisini okumakta ve gelen json bilgisini ayıklamaktadır.
- Dosya ekleri
-
- SampleApi.7z
- (52.6 KiB) 355 kere indirildi
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
Üstadım çok çok teşekkür ederim. Tam istediğime benzer bir uygulama.
Peki Delphi 7 için düzenlemek çok mu zor olur? Zor derseniz bu versiyonla devam edeceğim.
Peki Delphi 7 için düzenlemek çok mu zor olur? Zor derseniz bu versiyonla devam edeceğim.
Re: Webden Bir Alandan Veri Çekmek
TNetHTTPClient yerine IdHTTP bileşeni kullanabilirsiniz.
Delphi7'nin JSON kabiliyetlerini hiç bilmiyorum. Kendi çözümünüzü uygulayabilirseniz bu da çözülebilir.
Diğer taraftan tavsiyem mümkün olan en son Delphi sürümüne geçiş yapmanız olacaktır.
Delphi7'nin JSON kabiliyetlerini hiç bilmiyorum. Kendi çözümünüzü uygulayabilirseniz bu da çözülebilir.
Diğer taraftan tavsiyem mümkün olan en son Delphi sürümüne geçiş yapmanız olacaktır.
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
Hiç api kullanmadan (Çünkü safya üyeliksiz girişe açık ve veriler açıkta duruyor) resimde koyduğum alandaki veriyi çekemez miyiz (Delphi 7 kullanıyorum)?
Ben bunu php ile kolayca yapıyordum. Delphi ile bir edit içerisinde gösteremez miyim?
Adres: "https://www.binance.com/tr/markets"
Mesela resimdeki gibi XRP nin "div.css-1ad2brd" alanındaki "0.00084913" değerini edit içerisinde görmek istiyorum.
Umarım anlatabilmişimdir.
Ben bunu php ile kolayca yapıyordum. Delphi ile bir edit içerisinde gösteremez miyim?
Adres: "https://www.binance.com/tr/markets"
Mesela resimdeki gibi XRP nin "div.css-1ad2brd" alanındaki "0.00084913" değerini edit içerisinde görmek istiyorum.
Umarım anlatabilmişimdir.
- Dosya ekleri
-
- Delphi7.png (6.67 KiB) 5210 kere görüntülendi
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
Arkadaşlar bu konuda yorum yapabilecek birileri var mı?
PHP ile parse yapılıp istediğim veriyi alabiliyordum fakat bunu Delphi 7 ile yapmak istiyorum. Çok araştırdım bir örnek bulamadım. Tecrübeli arkadaşların yardımına ihtiyacım var
PHP ile parse yapılıp istediğim veriyi alabiliyordum fakat bunu Delphi 7 ile yapmak istiyorum. Çok araştırdım bir örnek bulamadım. Tecrübeli arkadaşların yardımına ihtiyacım var
Re: Webden Bir Alandan Veri Çekmek
Merhaba.
* Sizin için çözüm üreten kod aşağıdadır.
Bonus olarak daha da gelişkin -bir defada birden fazla değer- sorgulamak isteyebileceğinizi değerlendirdim.
Parametre olarak set halinde dilediğiniz kadar içeriğin high değerini bir defada string olarak döndürecektir.
Kullanımı :

* Sizin için çözüm üreten kod aşağıdadır.


Kod: Tümünü seç
uses System.Net.HttpClientComponent, System.Generics.Collections, JSON;
function GetBinanceHighValue( const xValues: array of string ): string;
const
aUrl = 'https://www.binance.com/tr/trade/BNB_USDT';
var
aClient : TNetHTTPClient;
sJSON, sSearch : String;
aJSONData : TJSONValue;
aJSONValue : TJSONValue;
i : Integer;
begin
Result := '';
aClient := TNetHTTPClient.Create(nil);
try
aClient.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'; // 'Dalvik/2.1.0 (Linux; U; Android 8.0.0; SM-N950F Build/R16NW)';
aClient.Accept := 'text/html';
sJSON := aClient.Get( aUrl ).ContentAsString;
// Parse Section
// ------------------------------------------------------------------------ //
sSearch := '<textarea id="__APP_DATA" style="display: none">';
if pos(sSearch, sJSON ) > 0 then
begin
System.Delete(sJSON, 1, Pos(sSearch, sJSON) + Length(sSearch)-1);
sSearch := '"productMap":';
if pos(sSearch, sJSON ) > 0 then begin
System.Delete(sJSON, 1, Pos(sSearch, sJSON) + Length(sSearch)-1);
sJSON := Copy(sJSON, 1, Pos(',"updateTime":', sJSON)-1);
end;
end;
// -------------------------------------------------------------------------- //
// JSON Parse section
// -------------------------------------------------------------------------- //
aJSONData := JSON.TJSONObject.ParseJSONValue( TEncoding.ASCII.GetBytes( Trim(sJSON) ), 0);
try
if aJSONData <> nil then
begin
for i := Low(xValues) to High(xValues) do begin
if aJSONData.FindValue(xValues[i]) <> nil then
begin
aJSONValue := aJSONData.GetValue<TJSONObject>(xValues[i]);
if aJSONValue.FindValue('high') <> nil then
begin
if Result = ''
then Result := xValues[i] + ': ' + ((aJSONValue as TJSONObject).Get('high').JsonValue as TJSONString).Value
else Result := Result + ', ' + xValues[i] + ': ' + ((aJSONValue as TJSONObject).Get('high').JsonValue as TJSONString).Value;
end;
end;
end;
end else begin
sJSON := '';
MessageDlg('Veri ekranına ulaşılamadı....', mtError, [mbOk], 0 );
end;
finally
aJSONData.Free;
end;
finally
FreeAndNil(aClient);
end;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
Sonuclar : String;
begin
Sonuclar := GetBinanceHighValue( [ 'ETHUSDT', 'BNBUSDT' ] );
Showmessage( Sonuclar );
end;

-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
Teşekkür ederim
peki "https://www.binance.com/tr/trade/BNB_USDT" bu sayfadaki "24S En Yüksek" değerini alma imkanımız var mı?
2.sorum sorgudan dönen birimin etiketini silme imkanımız olabillir mi? Yani "ETHUSDT: 247.87" gelen değeri "247.87" olarak gösteremez miyiz?
peki "https://www.binance.com/tr/trade/BNB_USDT" bu sayfadaki "24S En Yüksek" değerini alma imkanımız var mı?
2.sorum sorgudan dönen birimin etiketini silme imkanımız olabillir mi? Yani "ETHUSDT: 247.87" gelen değeri "247.87" olarak gösteremez miyiz?
Re: Webden Bir Alandan Veri Çekmek
Delphi konusunda daha çok çalışmanız gerekiyor.
olan yerdeki xValues + ': ' odaklanın deyip konuyu kapatıyorum. 
Kod: Tümünü seç
then Result := xValues[i] + ': ' + ((aJSONValue as TJSONObject).Get('high').JsonValue as TJSONString).Value
else Result := Result + ', ' + xValues[i] + ': ' + ((aJSONValue as TJSONObject).Get('high').JsonValue as TJSONString).Value;

-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
2.sorum tamam halloldu hocam çok çok teşekkür ederim.
Fakat 1.sorumdaki mesela "24s En Yüksek" değerinin karşılığını nereden bulacağım onu bilemedim. "ETHUSDT" dediğimizde ETH coininin USDT değerini çekebiliyoruz. Fakat bu değerlerin ne olduğunu nereden bulabilirim?
Çok çok teşekkür ederim
Fakat 1.sorumdaki mesela "24s En Yüksek" değerinin karşılığını nereden bulacağım onu bilemedim. "ETHUSDT" dediğimizde ETH coininin USDT değerini çekebiliyoruz. Fakat bu değerlerin ne olduğunu nereden bulabilirim?
Çok çok teşekkür ederim
-
- Üye
- Mesajlar: 118
- Kayıt: 17 Ağu 2010 09:08
Re: Webden Bir Alandan Veri Çekmek
Peki üstadım "https://api.binance.com/api/v3/ticker/24hr" bu adresten örnek veriyorum "WAVESBTC" symbolünün "highPrice" ve "lovPrice" değerlerini nasıl alabiliriz?
Delphi7 uyumlu da ayrıca sorsam neyi değiştirmem gerekir?
Delphi7 uyumlu da ayrıca sorsam neyi değiştirmem gerekir?