Проблема с печатью списка элементов Selenium (ошибка типа: индексы списка должны быть целыми или фрагментами, а не FirefoxWebElement)

#python #list #selenium

#python #Список #selenium

Вопрос:

Я знаю, что selenium хранит несколько элементов в виде списка, но я не могу выполнить итерацию по этому списку для печати текста?
Если да, то почему я могу печатать print(catagoryInfo[0].text) без каких-либо ошибок?

Вот мой код.

 from bs4 import BeautifulSoup
from selenium import webdriver

import webbrowser
import time

browser = webdriver.Firefox()

url = 'http://twitch.tv/directory'
browser.get(url)
time.sleep(4)

catagoryInfo = browser.find_elements_by_xpath("//div[@class='tw-card-body tw-relative']")
print(catagoryInfo[0].text)

for i in catagoryInfo:
    print(catagoryInfo[i].text)

browser.close()
  

И вывод:

Среди нас
70,3тыс. зрителей
Трассировка (последний последний вызов):
File «C:UsersthebrOneDrivecodepythonTwitchScrapetwitchScrape.py «, строка 17,
печатным шрифтом (catagoryInfo[i].текст)
Ошибка типа: индексы списка должны быть целыми или фрагментами, а не FirefoxWebElement

Ответ №1:

Вы не повторяете индексы, которые должны выполнять:

 for i in catagoryInfo:
    print(i.text)
  

или вы могли бы сделать

 for i in range(len(catagoryInfo)):
    print(catagoryInfo[i].text)
  

Комментарии:

1. Я не могу поверить, что я действительно допустил эту ошибку. Большое спасибо! Полностью забудьте, что i представляет сам список, а не просто целое число для позиционирования.

Ответ №2:

Вам нужно знать « for с итерацией « catagoryInfo .

Я думаю, что « catagoryInfo это не iteratable список или другие.

Поэтому, если вы использовали « for , « i будет объектом в объекте « catagoryInfo , а не индексом типа 1,2,3…