#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…