"'list' object has no attribute 'text'" hatası

Merhaba ben aşağıdaki kod ile faiz oranlarını bir liste haline getirerek tutmak istiyorum. İncele kısmından istediğim değerin üzerine tıkayarak XPath’ini oluşturdum ve o şekilde çekmeye çalıştım. Fakat kod çalıştığınde list has no text attribute hatasını alıyorum. Yardımcı olursanız sevinirim.

#Importing packages
from selenium import webdriver
import pandas as pd

driver = webdriver.Chrome('C:/Users/Samsung/Desktop/chromedriver')
driver.get('https://www.enuygun.com/mevduat/karsilastir/5000-tl-32-gunde-ne-kadar-faiz-getirir/')


for x in range(1, 12):

    curr_path = '/html/body/div[3]/div[1]/div/div[2]/div[x]/div/div/div[1]/div/div[1]/div/div[2]/a[1]/text()'
    title = driver.find_elements_by_xpath(curr_path)
    print(title.text)




Yamulmuyorsam eğer,

burada liste elde ediliyor.
Listenin içindeki elemanların text değerine ulaşmanız lazım.

title[0].text gibi

1 Beğeni

İyi geceler. Sadece faiz oranları, net getiri ve toplam kazanç değerlerinin çekildiğini düşündüm. Eğer bir yanlış varsa belirtmeyi ihmal etmeyin.
Ben Selenium yerine requests ve BeautifulSoup kütüphanelerini kullanmayı tercih ettim.

from pprint import pprint
import requests
from bs4 import BeautifulSoup

url = "https://www.enuygun.com/mevduat/karsilastir/5000-tl-32-gunde-ne-kadar-faiz-getirir/"
r = requests.get(url=url)
soup = BeautifulSoup(r.content,"lxml")
a = None
b = ""
for i in soup.find_all("div",attrs={"class":"col-xs-4 text-center"}):
    a = " ".join(i.text.split())
    b += a+" "
pprint(b.strip())
Konsol Çıktısı
('Yıllık Faiz Oranı: % 18,25 Net Getiri: 101 76,58 ₺ Toplam Kazanç: 5.077 ₺ '
 'Yıllık Faiz Oranı: % 20,50 Net Getiri: 142 86,08 ₺ Toplam Kazanç: 5.086 ₺ '
 'Yıllık Faiz Oranı: % 20,00 Net Getiri: 121 83,95 ₺ Toplam Kazanç: 5.084 ₺ '
 'Yıllık Faiz Oranı: % 17,50 Net Getiri: 172 73,38 ₺ Toplam Kazanç: 5.073 ₺ '
 'Yıllık Faiz Oranı: % 19,00 Net Getiri: 136 79,75 ₺ Toplam Kazanç: 5.080 ₺ '
 'Yıllık Faiz Oranı: % 16,50 Net Getiri: 166 69,17 ₺ Toplam Kazanç: 5.069 ₺ '
 'Yıllık Faiz Oranı: % 16,35 Net Getiri: 115 68,55 ₺ Toplam Kazanç: 5.069 ₺ '
 'Yıllık Faiz Oranı: % 16,00 Net Getiri: 96 66,63 ₺ Toplam Kazanç: 5.067 ₺ '
 'Yıllık Faiz Oranı: % 15,00 Net Getiri: 73 62,84 ₺ Toplam Kazanç: 5.063 ₺ '
 'Yıllık Faiz Oranı: % 14,00 Net Getiri: 112 58,63 ₺ Toplam Kazanç: 5.059 ₺ '
 'Yıllık Faiz Oranı: % 13,75 Net Getiri: 148 57,59 ₺ Toplam Kazanç: 5.058 ₺ '
 'Yıllık Faiz Oranı: % 12,00 Net Getiri: 83 50,22 ₺ Toplam Kazanç: 5.050 ₺')

Pandas ile olan bölümü siz yaparsınız.(zira hiç tecrübem olmadı :nerd_face: :upside_down_face:)

1 Beğeni

Çok teşekkür ederim yanıtınız için aslında ben hepsini ayrı ayrı çekmek istiyordum çünkü sonrasında dataframe haline getirip işlem yapacağım.

Numpy ve Pandas kütüphanelerinde oldukça tecrübesizim. pandas.DataFrame — pandas 1.4.2 documentation bakarak birşeyler denedim bilmiyorum isteğiniz tam olarak bu mu ama.

Sanırım üzerine fazlaca koymanız gerekecek :roll_eyes:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np

url = "https://www.enuygun.com/mevduat/karsilastir/5000-tl-32-gunde-ne-kadar-faiz-getirir/"
r = requests.get(url=url)
soup = BeautifulSoup(r.content,"lxml")
a = None
faiz_cart_curt = []
firmalar = []

for i in soup.find_all("div",attrs={"class":"col-xs-4 text-center"}):
    a = " ".join(i.text.split())
    faiz_cart_curt.append(a+" ")

for j in soup.find_all("a",attrs={"class":"result-label"}):
    a = " ".join(j.text.split())
    firmalar.append(a+" ")

index = 0
for k in range(0,len(faiz_cart_curt),3):
    df = pd.DataFrame(np.array([faiz_cart_curt[k]]),columns=[firmalar[index]])
    print(f"{df}\n")
    index += 1
Çıktı
  Odeabank Oksijen Dinamik Hesap 
0     Yıllık Faiz Oranı: % 18,25 

  Alternatif Bank VOV Hesap (500 TL'ye varan Nakit İadesi) 
0                        Yıllık Faiz Oranı: % 20,50        

  Fibabanka Kiraz Hesap (vadesiz tutar hariç getiri hesaplama) 
0                        Yıllık Faiz Oranı: % 20,00

     CEPTETEB Marifetli Hesap 
0  Yıllık Faiz Oranı: % 17,50 

  ING Turuncu Ekstra’lı e-Turuncu Hesap 
0            Yıllık Faiz Oranı: % 19,00 

               Hsbc E Mevduat 
0  Yıllık Faiz Oranı: % 16,50 

          Denizbank E-Mevduat
0  Yıllık Faiz Oranı: % 16,35

        CEPTETEB Vadeli Hesap
0  Yıllık Faiz Oranı: % 16,00

   Akbank Direkt Vadeli Hesap
0  Yıllık Faiz Oranı: % 15,00

  Enpara.com Vadeli Mevduat Hesabı 
0       Yıllık Faiz Oranı: % 14,00

    Halkbank E-Vadeli Mevduat
0  Yıllık Faiz Oranı: % 13,75

  İş Bankası Şubesiz Vadeli Mevduat 
0        Yıllık Faiz Oranı: % 12,00
1 Beğeni