Şirket Bilançolarını toplu indirme – 2022 Güncellemesi

2020 yılında, acil ihtiyacım olduğu için ve sonrasını da çok (hiç) düşünmeden hızlıca powershell ile -kendime- yazdığım “Şirket Bilançolarını toplu indirme”scripti ile ilgili güncellik sorunları ve serzenişler içeren mailler almıştım (neden paylaşıyorsun diye küfür de içeren yorum yazan arkadaşı da analım). Aslında clean code kurallarına çok uymadığı ve daha ziyade spaghetti olan bu kodları neden paylaştım ve başıma dert aldım bilmiyorum. Neyse, bu akşam çok müsait ve canım sıkılan bir zamanımda twitter’dan gelen bir DM ile hızlıca göz atıp 2022 yılını da içerek şekilde güncelledim. Artık 2023 yılı ve neden herkese paylaştığımın hesabını sorup küfürler yazan bencil (!) arkadaşlar düşünsün.

Eski versiyonda detaylı açıklamaları var, link şurada;

www.mustak.org/sirket-bilancolarini-toplu-halde-indirelim/

Gene uyarılarımı yapayım; bug olabilir, hızlıca güncelledim. Sorumluluk kabul etmiyor, peşinen reddediyorum. PowerShell ISE ile scripti çalıştırabileceğinizi, çıktının C:/ ana dizini altında olacağını ve kullanıcı yetkisi gibi hatalar alırsanız aşağıda yazdığım  şu kuralı çalıştırmanız gerektiğini unutmayın;

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

“Kontrolsüz” Güncellenmiş kodlar ise şöyle;

# Created : 2020/05 - Revised : 2022/10 
# hmustak - mustak.org

$code="EREGL"
 
$ceyrek=3
 
#Son yıl
$yil=2020
#Kolon isimleri ve ilk yılın (2014) artık dönemini burada şekillendiriyoruz
$URL9="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=2014&period2=12&year3=2014&period3=9&year4=2014&period4=6"
$Response9 = Invoke-WebRequest -Uri $URL9
$a9 = ConvertFrom-Json -InputObject $Response9.Content
$a8= $a9.value | Select ItemDescTr, value2,value3,value4
 
#2015 Yılı
sleep(1)
$yil=2015
$URL10="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response10 = Invoke-WebRequest -Uri $URL10
$a10 = ConvertFrom-Json -InputObject $Response10.Content
$a11= $a10.value | Select value1,value2,value3,value4
 
#2016 Yılı
sleep(1)
$yil=2016
$URL20="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response20 = Invoke-WebRequest -Uri $URL20
$a20 = ConvertFrom-Json -InputObject $Response20.Content
$a21= $a20.value | Select value1,value2,value3,value4
 
#2017 Yılı
sleep(1)
$yil=2017
$URL30="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response30 = Invoke-WebRequest -Uri $URL30
$a30 = ConvertFrom-Json -InputObject $Response30.Content
$a31= $a30.value | Select value1,value2,value3,value4
 
#2018 Yılı
sleep(1)
$yil=2018
$URL40="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response40 = Invoke-WebRequest -Uri $URL40
$a40 = ConvertFrom-Json -InputObject $Response40.Content
$a41= $a40.value | Select value1,value2,value3,value4
 
#2019 Yılı
sleep(1)
$yil=2019
$URL50="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response50 = Invoke-WebRequest -Uri $URL50
$a50 = ConvertFrom-Json -InputObject $Response50.Content
$a51= $a50.value | Select value1,value2,value3,value4
 
#2020 Yılı
sleep(1)
$yil=2020
$URL60="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response60 = Invoke-WebRequest -Uri $URL60
$a60 = ConvertFrom-Json -InputObject $Response60.Content
$a61= $a60.value | Select value1,value2,value3,value4
 
#2021 Yılı
sleep(1)
$yil=2021
$URL70="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response70 = Invoke-WebRequest -Uri $URL70
$a70 = ConvertFrom-Json -InputObject $Response70.Content
$a71= $a70.value | Select value1,value2,value3,value4

#2022 Yılı
sleep(1)
$yil=2022
$URL80="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=$yil&period2=9&year3=$yil&period3=6&year4=$yil&period4=3"
$Response80 = Invoke-WebRequest -Uri $URL80
$a80 = ConvertFrom-Json -InputObject $Response80.Content
$a81= $a80.value | Select value1,value2,value3,value4

 
#4Ç Düzeltmesi
#Burada tüm çeyrekler 12.ay : 2020-2019-2018
sleep(1)
$URL1000="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=2020&period2=12&year3=2019&period3=12&year4=2018&period4=12"
$Response1000 = Invoke-WebRequest -Uri $URL1000
$a1000 = ConvertFrom-Json -InputObject $Response1000.Content
$a1001= $a1000.value | Select value1,value2,value3,value4
 
#4Ç Düzeltmesi
#Burada tüm çeyrekler 12.ay : 2017-2016-2015
sleep(1)
$URL2000="https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=$code&exchange=TRY&financialGroup=XI_29&year1=2020&period1=3&year2=2017&period2=12&year3=2016&period3=12&year4=2015&period4=12"
$Response2000 = Invoke-WebRequest -Uri $URL2000
$a2000 = ConvertFrom-Json -InputObject $Response2000.Content
$a2001= $a2000.value | Select value1,value2,value3,value4
 
 
 
class CsvRow {
  [object] ${Kalem}

  [object] ${2022/12}
  [object] ${2022/9}
  [object] ${2022/6}
  [object] ${2022/3}

  [object] ${2021/12}
  [object] ${2021/9}
  [object] ${2021/6}
  [object] ${2021/3}

  [object] ${2020/12}
  [object] ${2020/9}
  [object] ${2020/6}
  [object] ${2020/3}
 
  [object] ${2019/12}
  [object] ${2019/9}
  [object] ${2019/6}
  [object] ${2019/3}
 
  [object] ${2018/12}
  [object] ${2018/9}
  [object] ${2018/6}
  [object] ${2018/3}
 
  [object] ${2017/12}
  [object] ${2017/9}
  [object] ${2017/6}
  [object] ${2017/3}
 
  [object] ${2016/12}
  [object] ${2016/9}
  [object] ${2016/6}
  [object] ${2016/3}
 
  [object] ${2015/12}
  [object] ${2015/9}
  [object] ${2015/6}
  [object] ${2015/3}
 
  [object] ${2014/12}
  [object] ${2014/9}
  [object] ${2014/6}
 
}
 
$count = $a8.value1.Count-1
 
# Dizi sınıfını oluşturalım
$arrayList = [System.Collections.ArrayList]::new()
 
# Loop
foreach ($ndx in 0..$count) {
  $rowObj = [CsvRow]::new()
 
  # Dizi değerlerini atayalım
  $rowObj.'Kalem'  = $a8.itemDescTr[$ndx]

  #$rowObj.'2022/12'= $a1001.value2[$ndx]
  #$rowObj.'2022/9' = $a81.value2[$ndx]
  $rowObj.'2022/6' = $a81.value3[$ndx]
  $rowObj.'2022/3' = $a81.value4[$ndx]

  $rowObj.'2021/12'= $a1001.value2[$ndx]
  $rowObj.'2021/9' = $a71.value2[$ndx]
  $rowObj.'2021/6' = $a71.value3[$ndx]
  $rowObj.'2021/3' = $a71.value4[$ndx]

  $rowObj.'2020/12'= $a1001.value2[$ndx]
  $rowObj.'2020/9' = $a61.value2[$ndx]
  $rowObj.'2020/6' = $a61.value3[$ndx]
  $rowObj.'2020/3' = $a61.value4[$ndx]
 
  $rowObj.'2019/12'= $a1001.value3[$ndx]
  $rowObj.'2019/9' = $a51.value2[$ndx]
  $rowObj.'2019/6' = $a51.value3[$ndx]
  $rowObj.'2019/3' = $a51.value4[$ndx]
 
  $rowObj.'2018/12'= $a1001.value4[$ndx]
  $rowObj.'2018/9' = $a41.value2[$ndx]
  $rowObj.'2018/6' = $a41.value3[$ndx]
  $rowObj.'2018/3' = $a41.value4[$ndx]
 
  $rowObj.'2017/12'= $a2001.value2[$ndx]
  $rowObj.'2017/9' = $a31.value2[$ndx]
  $rowObj.'2017/6' = $a31.value3[$ndx]
  $rowObj.'2017/3' = $a31.value4[$ndx]
 
  $rowObj.'2016/12'= $a2001.value3[$ndx]
  $rowObj.'2016/9' = $a21.value2[$ndx]
  $rowObj.'2016/6' = $a21.value3[$ndx]
  $rowObj.'2016/3' = $a21.value4[$ndx]
 
  $rowObj.'2015/12'= $a2001.value4[$ndx]
  $rowObj.'2015/9' = $a11.value2[$ndx]
  $rowObj.'2015/6' = $a11.value3[$ndx]
  $rowObj.'2015/3' = $a11.value4[$ndx]
 
  $rowObj.'2014/12'= $a8.value2[$ndx]
  $rowObj.'2014/9' = $a8.value3[$ndx]
  $rowObj.'2014/6' = $a8.value4[$ndx]
 
  $null = $arrayList.Add($rowObj)
}
 
# Dizi çıktımızı CSV olarak verelim
$arrayList | Export-Csv -NoTypeInformation -Path "C:\$code.csv" -Encoding UTF8

# Created : 2020/05 - Revised : 2022/10 
# hmustak - mustak.org

Umarım işinize yarar…

Hakan Müştak


3 yorum

  1. Alp Çintan dedi ki:

    Merhaba, Yukardaki kod ile örnek olarak AKBNK bilgileri çekilmiyor. anladığım kadarı ile financialGroup=XI_29 ile ilgili.. Banka bilgileri konusunda bildiğin bir kod varmı?

    • hmustak dedi ki:

      Zaman zaman sorun çıktı mesajları alıyorum sizin yazdığınız gibi. Açıkcası bende sorunsuz çalışıyor ve nedenini bilmiyorum. Sorun çıkanlar için alternatif olarak python versiyonunu yazdım. Onu deneyebilirsiniz.
      Link : https://www.mustak.org/sirket-bilancolarini-toplu-indirme-python-guncellemesi/

      • Alp Çintan dedi ki:

        İlk önce zaman ayırıp cevap yazdığın için teşekkürler. Diğer bütün sektör HİSSE senedi bilgilerini çekebiliyorum. O kısımda hic bir sorun yok.. Kod içinde sorun olsa hiç birisi gelmez. sadece bankalar gelmiyor. Bu konuda financialGroup=XI_29 ile ilgili olduğunu düşündüm. şans eseri 29 değiştirerek denemeler yaptım ama olmadı. Size sormak istedim. (AKBNK ISCTR)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top