Şimdi Ara

Python ile İş Bankası'ndan anlık döviz kurlarını çekme (2. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
34
Cevap
4
Favori
1.653
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
5 oy
Öne Çıkar
Sayfa: önceki 12
Sayfaya Git
Git
Giriş
Mesaj
  • .Statistics. kullanıcısına yanıt

    Merhaba,


    Aklınızda yapmak istediğinizi söylerseniz buradan güzel bir proje çıkabilir. Özellikle zaman konusunda ayrı bir script yazılıp gelen veriyi hangi zaman diliminde kaydetmek istediğiniz, ekinoks zamanlarındaki geçişler, TR'deki bayram vs tatilleri piyasanın on/off olduğu saatler ile ilgili bir şeyler yapabilirim.


    Örneğin siz Amsterdam'dasınız yaz ve kış saatleri uygulaması var ve saatlerinin ileri/geri alınıyor. Veriyi kaydederken Local Time, Bank, Currency Data ... şeklinde kaydedebilirsiniz. Her seferinde sorgu yaparken bu veri yaz saatine mi ait, kış saatine mi ait (+1 veya +2 saat eklenecek) veya TR'de düne mi ait bugüne mi ait, o gün bayram mı seyran mı diye kontrol etmeniz gerekiyor. Zamanı ayrı bir scripte sorarak daha öncesinde o gün ve saat ile ilgili gerçek detaylı bilgi alınabilir.


    Saygılarımla.

  • Benim koyduğum site expire oldu, herif tekrar ortaya çıktı hiçbir şey olmamış gibi. Komedi ya bu tip.. kendi yazıp kendi cevap veriyor.

    Oğlum, zaman serisi ihtiyacın varsa gir Merkez Bankasının sitesine, EVDS diye geçen kısım, bedava indiriyorsun tüm kur serilerini.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Amma dram çıkardınız birinin paylaştığı şeyden. Python ile İş Bankası'ndan anlık döviz kurlarını çekme 

  • seyfi84 S kullanıcısına yanıt
    Senin site:

    https://tugkan.tiiny.site

    Soru günceldir. Beautiful Soup ile Sayılar Tablosu altındaki 3 sayıyı (98, 105, 117) scrape eden kod yazınız.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • kayadelenium kullanıcısına yanıt

    Hocam eline sağlık, benim de aklıma birkaç proje var aslında, örneğin BDDK'nın yayınladığı haftalık ve aylık sektör verilerini otomatik çekip getirmek gibi. Sadece ay ve sene bilgisi input olacak şekilde yapılabilir diye düşünüyorum ama burada tek sıkıntı sayfanın değişiyor olması her hafta :) Bu konuda çözüm yolları var ama sizin daha önce sayfa path'i değişen bir senaryoda data getirdiğiniz bir çalışma var mı ?

  • bddk sayfasında excel raporlama var adresi program aracılığıyla oluşturup parameterler geçilir download edilir bitanede excel parser ile indirilen dosya arayüzde gösterilebilir

    örnekler


    https://www.bddk.org.tr/BultenAylik/tr/Home/BasitExceleAktar?tabloNo=1&yil=2022&ay=7&paraBirimi=TL&taraf[0]=10001&taraf[1]=10002


    https://www.bddk.org.tr/BultenAylik/tr/Home/BasitExceleAktar?tabloNo=2&yil=2022&ay=7&paraBirimi=TL&taraf[0]=10001



    aylık bülten örnek uygulama çok hata kontrol üzerinde durmadım

    https://s7.dosya.tc/server24/ab7ec2/Bddk.zip.html


    Kod

    Yığını:
    <hc:Window x:Class="Bddk.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:local="clr-namespace:Bddk" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="MainWindow" Width="800" Height="450" UseLayoutRounding="True" WindowState="Maximized" mc:Ignorable="d"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="3*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition /> </Grid.RowDefinitions> <StackPanel Grid.ColumnSpan="2" Orientation="Horizontal"> <ComboBox ItemsSource="{Binding Yıllar}" SelectedItem="{Binding SeçiliYıl}" /> <ComboBox ItemsSource="{Binding Aylar}" SelectedItem="{Binding SeçiliAy}" /> <ComboBox SelectedItem="{Binding ParaBirimi}"> <System:String>TL</System:String> <System:String>USD</System:String> </ComboBox> <hc:CheckComboBox x:Name="CheckComboBox" MinWidth="200" MaxWidth="400" DisplayMemberPath="Value" ItemsSource="{Binding Taraf}" SelectionChanged="CheckComboBox_SelectionChanged" Style="{StaticResource CheckComboBoxPlus}" /> <Button Click="Button_Click" Content="İNDİR" /> </StackPanel> <ListBox Grid.Row="1" SelectedIndex="{Binding SeçiliVeri}"> <System:String>Bilanço</System:String> <System:String>Kar Zarar</System:String> <System:String>Krediler</System:String> <System:String>Tüketici Kredileri</System:String> <System:String>Sektörel Kredi Dağılımı</System:String> <System:String>KOBİ Kredileri</System:String> <System:String>Sendikasyon Seküritizasyon Kredileri</System:String> <System:String>Menkul Kıymetler</System:String> <System:String>Mevduat Türler İtibarıyla</System:String> <System:String>Mevduat Vade İtibarıyla</System:String> <System:String>Likidite Durumu</System:String> <System:String>Sermaye Yeterliliği</System:String> <System:String>Yabancı Para Pozisyonu</System:String> <System:String>Bilanço Dışı İşlemler</System:String> <System:String>Rasyolar</System:String> <System:String>Diğer Bilgiler</System:String> <System:String>Yurt Dışı Şube Rasyoları</System:String> </ListBox> <DataGrid x:Name="Dg" Grid.Row="1" Grid.Column="1" /> </Grid> </hc:Window>


    Kod

    Yığını:
    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using ExcelDataReader; namespace Bddk { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : HandyControl.Controls.Window { public MainWindow() { InitializeComponent(); DataContext = this; Taraf.Add(10001, "Sektör"); Taraf.Add(10002, "Mevduat"); Taraf.Add(10003, "Mevduat Yerli"); Taraf.Add(10004, "Mevduat Kamu"); Taraf.Add(10005, "Mevduat Yabancı"); Taraf.Add(10006, "Katılım"); Taraf.Add(10007, "Kalkınma ve Yatırım"); Taraf.Add(10008, "Yerli Özel"); Taraf.Add(10009, "Kamu"); Taraf.Add(10010, "Yabancı"); } public IEnumerable<int> Aylar { get; set; } = Enumerable.Range(1, DateTime.Now.Month); public string ParaBirimi { get; set; } = "TL"; public int SeçiliAy { get; set; } = 1; public int SeçiliVeri { get; set; } = 0; public int SeçiliYıl { get; set; } = DateTime.Now.Year; public Dictionary<int, string> Taraf { get; set; } = new Dictionary<int, string>(); public string TarafMetin { get; set; } public IEnumerable<int> Yıllar { get; set; } = Enumerable.Range(DateTime.Now.Year - 20, 21); private void Button_Click(object sender, RoutedEventArgs e) { if (TarafMetin is null) { MessageBox.Show("Taraf Bilgisi Seçin"); return; } string adres = $"https://www.bddk.org.tr/BultenAylik/tr/Home/BasitExceleAktar?tabloNo={SeçiliVeri + 1}&yil={SeçiliYıl}&ay={SeçiliAy}&paraBirimi={ParaBirimi}&{TarafMetin}"; string fileName; using (WebClient client = new WebClient()) { fileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".xlsx"; client.DownloadFile(adres, fileName); } using (FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read)) { using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream)) { Dg.ItemsSource = reader.AsDataSet().Tables[0].DefaultView; } } } private void CheckComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { string data = ""; for (int i = 0; i < CheckComboBox.SelectedItems.Count; i++) { KeyValuePair<int, string> item = (KeyValuePair<int, string>)CheckComboBox.SelectedItems[i]; data += "taraf[" + i + "]=" + item.Key + "&"; } TarafMetin = data; } } }



    < Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 8 Eylül 2022; 21:8:49 >




  • Spartan 117 kullanıcısına yanıt

    Merhaba,


    Bahsetmiş olduğunuz konu ve sayfa aşağıda resmi ve bağlantısı olan sayfa mı?


    Bağlantı adresi: https://www.bddk.org.tr/BultenHaftalik


    Saygılarımla.



    Python ile İş Bankası'ndan anlık döviz kurlarını çekme




  • Merhaba,


    @Spartan 117 Evet bu şekilde de yapılabilir. Hatta bu şekilde yapmak hem daha hızlı hem de daha kolaydır.


    Ya da istenirse parametreler post ile gönderilerek sadece istenilen veri de çekilebilir.


    Saygılarımla.

  • @kayadelenium , @Gökşen PASLI Arkadaşlar ikinize de çok teşekkür ederim. Yoğun bir gündü, en kısa sürede kodu inceleyeceğim, hata düzeltme kısmını da ben yaparım :) Elinize sağlık.

  • https://eminent-uneven-ankle.glitch.me/
    hala bekliyorum, şuradaki 3 sayıyı crawl edip gösteren python scriptini...
    .Net/C# şovmeni de geldi konuya, tamam o da C# ile yapsın, hadi bekliyoruz bak kaç hafta oldu.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Kod

    Yığını:
    using System; using System.Threading.Tasks; using Microsoft.Playwright; namespace ConsoleApp2 { internal static class Program { private static async Task Main(string[] args) { using IPlaywright pw = await Playwright.CreateAsync(); await using IBrowser browser = await pw.Chromium.LaunchAsync(new BrowserTypeLaunchOptions() { Channel = "msedge" }); IPage page = await browser.NewPageAsync(); IResponse resp = await page.GotoAsync("https://eminent-uneven-ankle.glitch.me"); System.Text.Json.JsonElement? first = await page.EvaluateAsync("var k = document.getElementsByTagName('tr')[1].cells[0];k.innerHTML = k.attributes[0].textContent.codePointAt(0); "); System.Text.Json.JsonElement? second = await page.EvaluateAsync("var k = document.getElementsByTagName('tr')[1].cells[1];k.innerHTML = k.attributes[0].textContent.codePointAt(0); "); System.Text.Json.JsonElement? third = await page.EvaluateAsync("var k = document.getElementsByTagName('tr')[1].cells[2];k.innerHTML = k.attributes[0].textContent.codePointAt(0); "); Console.WriteLine(first); Console.WriteLine(second); Console.WriteLine(third); } } }

    Gelecek Cevabı da Söyleyeyim Browser Çalıştırma Yasak




    < Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 14 Eylül 2022; 19:44:59 >




  • seyfi84 S kullanıcısına yanıt

    oncesinde js interpreter kullanip yine statik html bir siteymis gibi isleyebilir. aratirken puppeteer diye bir sey gordum o isine yarar.

  • 
Sayfa: önceki 12
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.