सेलेनियम टाइपर्रर: 'वेबलाइमेंट' ऑब्जेक्ट सब्स्क्रिप्टेबल नहीं है [डुप्लिकेट]

Dec 17 2020

मैंने पिछली पुनरावृत्त सूची की वस्तुओं को जोड़कर एक शब्दकोश बनाने की कोशिश की, और मुझे पता है कि समस्या क्या है:

for i in range(3):    
    try:
    #primero: encontrar el boton:
        boton=WebDriverWait(driver,6).until(
            EC.presence_of_element_located(By.XPATH,'//div[@class="entrys-con-banner last clearfix"]//a[@class="btn"]')
        )
        boton.click()
    
    #segundo:esperar a que cargue la informacion:
        WebDriverWait(driver,7).until(
            EC.presence_of_all_elements_located((By.XPATH,'//article[@itemtype="http://schema.org/Article"]'))
        )
    
        sleep(random.uniform(4.0,6.0))
        
    except:
        break
        print("Error")
        

ElEconomista=[]

articulos=driver.find_elements_by_xpath('//article[@itemtype="http://schema.org/Article"]')

for articulo in articulos:
    autor=articulo.find_element_by_xpath('.//p/a').text
    titulo=articulo.find_element_by_xpath('.//div[@class="entry-data"]/h3/a').text
    try:
        nota=articulo.find_element_by_xpath('.//div[@class="entry-data"]/p').text 
    except:
        nota="NA"
    
    #se crea un diccionario para cada item
    articulo_dict=dict()
    
    articulo_dict["autor"]=articulo["autor"]
    articulo_dict["titulo"]=articulo["titulo"]
    articulo_dict["nota"]=articulo["nota"]
    
    ElEconomista.append(articulo_dict)

 
    

पिछला कोड यहाँ दी गई सलाह को ले कर संशोधित किया गया था, (नीचे दिए गए कोड के कारण त्रुटि अलग है), लेकिन फिर भी यह मुझे एक ही त्रुटि देता है, इसलिए मैंने सभी कोड डालने का फैसला किया

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-01b021486e73> in <module>
     57 
     58     ElEconomista.append({
---> 59         "autor":articulo["autor"],
     60         "titulo":articulo["titulo"],
     61         "nota":articulo["nota"]

TypeError: 'WebElement' object is not subscriptable

जवाब

patrec Dec 17 2020 at 00:47

आपको शब्दकोशों की एक सूची बनाने की आवश्यकता है। इसलिए पहले आप प्रत्येक लेख के लिए एक विशिष्ट शब्दकोश बनाएं और उसे उचित जानकारी के साथ भरें और फिर उस शब्दकोश को अपनी सूची में जोड़ेंElEconomista

for articulo in articulos:
    autor=articulo.find_element_by_xpath('.//p/a').text
    titulo=articulo.find_element_by_xpath('.//div[@class="entry-data"]/h3/a').text
    try:
        nota=articulo.find_element_by_xpath('.//div[@class="entry-data"]/p').text 
    except:
        nota="NA"

    articulo_dict = dict()
    articulo_dict["autor"] = autor
    articulo_dict["titulo"] = titulo
    articulo_dict["nota"] = nota

    ElEconomista.append(articulo_dict)