Arama butonu
Bu konudaki kullanıcılar: 1 misafir
31
Cevap
1636
Tıklama
5
Öne Çıkarma
Cevap: Python ile İş Bankası'ndan anlık döviz kurlarını çekme (2. sayfa)
K
2 yıl
Teğmen
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @.Statistics.
S
2 yıl
Yüzbaşı

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ı >
Bu mesaja 1 cevap geldi.
S
2 yıl
Binbaşı

Amma dram çıkardınız birinin paylaştığı şeyden.



T
2 yıl
Yarbay

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ı >


Bu mesajda bahsedilenler: @seyfi84
S
2 yıl
Yarbay

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ı ?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kayadelenium
G
2 yıl
Yarbay

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

<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>



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 >
Bu mesaja 2 cevap geldi.
K
2 yıl
Teğmen
Konu Sahibi

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.


< Resime gitmek için tıklayın >




Bu mesajda bahsedilenler: @Spartan 117
K
2 yıl
Teğmen
Konu Sahibi

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.




Bu mesajda bahsedilenler: @Spartan 117 , @Gökşen PASLI
S
2 yıl
Yarbay

@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.




Bu mesajda bahsedilenler: @kayadelenium , @Gökşen PASLI
S
2 yıl
Yüzbaşı

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ı >

G
2 yıl
Yarbay

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 >

H
2 yıl
Binbaşı

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




Bu mesajda bahsedilenler: @seyfi84
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.