Merhaba, iş yatırım sitesine istek gönderip yayınlanan bilançoların çekilmesi ile ilgili araştırma yapıyorum. İşlemin sonuna geldim ve verileri excel dosyasına gönderiyorum. Tek sorun excel sayfasının 1. satırında bilanço tarihlerinin yazması gerekli fakat ekleyemiyorum. Bilanço tarihlerinin olduğu bir listem mevcut fakat ekleyemedim.
import requests
from bs4 import BeautifulSoup
import pandas as pd
import json
hisseler = ["THYAO"]
user_agent = 'Mozilla/..........'
headers = {'User-Agent': user_agent}
url = "https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=ACSEL"
r = requests.get(url, headers=headers)
donemler = []
user_agent = 'Mozilla.........'
headers = {'User-Agent': user
s = BeautifulSoup(r.text, "html.parser")
s1 = s.find("select", id="ddlAddCompare")
c1 = s1.findChild("optgroup").findAll("option")
for i in hisseler:
hisse = i
tarihler = []
yillar = []
donemler = []
user_agent = 'Mozilla.........'
headers = {'User-Agent': user_agent}
url1 = "https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=" + hisse
r1 = requests.get(url1, headers=headers)
soup = BeautifulSoup(r1.text, "html.parser")
secim = soup.find("select", id="ddlMaliTabloFirst")
secim2 = soup.find("select", id="ddlMaliTabloGroup")
try:
cocuklar = secim.findChildren("option")
grup = secim2.find("option")["value"]
for i in cocuklar:
tarihler.append(i.string.rsplit("/"))
for j in tarihler:
yillar.append(j[0])
donemler.append(j[1])
if len(tarihler) >= 4:
parametreler = (
("companyCode", hisse),
("exchange", "TRY"),
("financialGroup", grup),
("year1", yillar[0]),
("period1", donemler[0]),
("year2", yillar[1]),
("period2", donemler[1]),
("year3", yillar[2]),
("period3", donemler[2]),
("year4", yillar[3]),
("period4", donemler[3]))
user_agent = 'Mozilla..........'
headers = {'User-Agent': user_agent}
url2 = "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo"
r22 = requests.get(url2, headers=headers, params=parametreler)
r2 = requests.get(url2, headers=headers, params=parametreler).json()["value"]
veri = pd.DataFrame.from_dict(r2)
veri.drop(columns=["itemCode", "itemDescEng"], inplace=True)
else:
continue
except AttributeError:
continue
del tarihler[0:4]
tumveri = [veri]
for _ in range(0,int(len(tarihler)+1)):
if len (tarihler)==len(yillar):
del tarihler[0:4]
else:
yillar=[]
donemler=[]
for j in tarihler:
yillar.append(j[0])
donemler.append(j[1])
if len (tarihler)>=4:
parametreler2 = (
("companyCode", hisse),
("exchange", "TRY"),
("financialGroup", grup),
("year1", yillar[0]),
("period1", donemler[0]),
("year2", yillar[1]),
("period2", donemler[1]),
("year3", yillar[2]),
("period3", donemler[2]),
("year4", yillar[3]),
("period4", donemler[3]))
user_agent = 'Mozilla..........'
headers = {'User-Agent': user_agent}
r3 = requests.get(url2, headers=headers, params=parametreler2).json()["value"]
veri2 = pd.DataFrame.from_dict(r3)
try:
veri2.drop(columns=["itemCode", "itemDescTr","itemDescEng"], inplace=True)
tumveri.append(veri2)
except KeyError:
continue
veri3=pd.concat(tumveri,axis=1)
baslik = ["Bilanço"]
for i in cocuklar:
baslik.append(i.string)
baslikfark=len(baslik)-len(veri3.columns)
if baslikfark !=0:
del baslik[-baslikfark:]
print(baslik) # excelde 1. satırda yazılacak başlıklar bunlar 1. satıra yazdıramıyorum
veri3.set_axis(baslik, axis=1)
veri3.fillna(0, inplace=True)
with pd.ExcelWriter("C:/Users/Documents/bilançolar/{}.xlsx".format(hisse)) as writer:
veri3.to_excel(writer, sheet_name="BİLANÇOLAR", index=False)
Baslıklar bu satıra gelmesi gerekiyor ama yazdıramıyorum.
Teşekkürler.