Selenium TypeError: objek 'WebElement' tidak dapat disubkripsikan [duplikat]
Saya mencoba membuat kamus dengan menambahkan item dari daftar berulang sebelumnya, dan saya tidak tahu apa masalahnya:
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)
Kode sebelumnya dimodifikasi dengan mengambil saran yang diberikan di sini, (alasan mengapa kesalahan di bawah berbeda dengan kode di atas), tetapi tetap memberi saya kesalahan yang sama, jadi saya memutuskan untuk memasukkan semua kode
---------------------------------------------------------------------------
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
Jawaban
patrec
Anda perlu membuat daftar kamus. Jadi pertama-tama Anda membuat kamus khusus untuk setiap artikel dan mengisinya dengan info yang tepat lalu menambahkan kamus itu ke daftar AndaElEconomista
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)