Selenium TypeError: 'WebElement'-Objekt ist nicht subskriptierbar [Duplikat]
Dec 17 2020
Ich habe versucht, ein Wörterbuch zu erstellen, indem ich die Elemente einer vorherigen iterierbaren Liste angehängt habe, und ich weiß nicht, wo das Problem liegt:
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)
Der vorherige Code wurde geändert, indem die hier gegebenen Hinweise befolgt wurden (der Grund, warum sich der folgende Fehler vom obigen Code unterscheidet), aber er gibt mir immer noch den gleichen Fehler, sodass ich beschlossen habe, den gesamten Code einzufügen
---------------------------------------------------------------------------
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
Antworten
patrec Dec 17 2020 at 00:47
Sie müssen eine Liste von Wörterbüchern erstellen. Zuerst erstellen Sie ein spezifisches Wörterbuch für jeden Artikel, füllen es mit den richtigen Informationen und hängen dieses Wörterbuch dann an Ihre Liste anElEconomista
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)