Selenium TypeError: Đối tượng 'WebElement' không thể chỉ định được [trùng lặp]
Dec 17 2020
Tôi đã cố gắng tạo từ điển bằng cách nối các mục của danh sách có thể lặp lại trước đó và tôi không biết vấn đề là gì:
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)
Mã trước đó đã được sửa đổi bằng cách thực hiện các lời khuyên được đưa ra ở đây, (lý do tại sao lỗi bên dưới khác với mã ở trên), nhưng nó vẫn cho tôi cùng một lỗi, vì vậy tôi quyết định đặt tất cả mã
---------------------------------------------------------------------------
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
Trả lời
patrec Dec 17 2020 at 00:47
Bạn cần tạo một danh sách các từ điển. Vì vậy, trước tiên, bạn tạo một từ điển cụ thể cho từng bài báo và điền vào nó với thông tin thích hợp, sau đó thêm từ điển đó vào danh sách của bạnElEconomista
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)