SyntaxError: invalid character '₺' (U+20BA) oldu. Hadi bunu elle sildim diyelim (500 civarı satır var onun için de bir yöntem bulmak lazım ama vakit kaybetmemek amacıyla ilkini elle sildim) bu kez SyntaxError: invalid decimal literal hatası verdi. Hatayı google’a sorduğumda değişken rakamla başlamaz gibi sonuçlar geldi ki benim değişkenlerde rakam yok
Yaptığım iki şey var. İlki feed methodu ile ilgili veriyi miras aldığımız sınıfa bildirmek. İkincisi ise miras olarak aldığımız sınıftan handle_data methodunu kullanarak text verisini ayrıştırıp yeni bir listeye eklemek.
Bu da güzel bir çözüm ancak şöyle bir sıkıntısı var. Siz anladığım kadarıyla elemanların başına elle ' ' eklemişsiniz. tek satır için ok ama bundan 500 satır olunca iş biraz daha komplike bir hale geliyor.
bu diziyi aşağıdaki gibi oluşturuyordum ve ufak bir eklentiyle (@Alih78 in de değindiği gibi) sonuca biraz daha yaklaştırdım.
liste=[]
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
response=requests.get(url,headers=headers)
html_icerigi=response.content
corba=BeautifulSoup(html_icerigi, "html.parser")
for i in kodlar:
url="https://www.google.com/finance/quote/"+i.replace('.IS','')+":IST"
print(url)
fk=corba.find_all("div", {'class':"P6K39c"})[5]
if fk == "N/A":
fk=""
print(fk)
liste.append([deger])
Diyerek bir liste içerisine alıp komplike haline getiriyorsunuz.
Evet çünkü En başta herhangi bir bilgi vermediniz. Şu modüller kullanıldı şunu yapmaya çalışıyorum vs… Hatta sizin örnek olarak verdiğiniz a listesi buraya yapıştırırken gözden kaçan ' ' arasındaki elemanlar.
Bellekten dolayı bir sıkıntı yaşayacağınızı düşünüyorsanız bunu bir generator oluşturarak düşüncenizden kurtulabilirsiniz. Hatta oluşturmanıza gerek yok çünkü Handle_data methodu bir generatorü çağırarak işlem yapıyor o yüzden herhangi olumsuz düşünceye sapmayın.
fk değişkenini üstte oluşturduğum sınıfa parametre olarak verin.
Diğer işlemler içinde htmlparser sınıfını kullanın işiniz çok daha kolaylaşacaktır.
Eğer kullanmak istemiyorsanız siz kendiniz parse ederek işlem yapmanız gerekiyor. Atıyorum <div ile başlıyor </div> ile bitiyorsa bunu belirtip aradaki diğer belirteçleri de ortadan kaldırarak parse edebilirsiniz. startswith, endswith, split gibi methodlara göz atın.
Aldığınız html parçası string olarak gelmiyor, BeautifulSoupun kendine özel bir veri türü olarak geliyor. Bundan dolayı bu türün text özelliğini kullanabilirsiniz. En azından bende sıkıntısız çalışıyor. Sizde çalışmıyor mu bilemedim.