Я тестирую, как получить все результаты на странице результатов поиска, чтобы научиться использовать Selenium. Когда я захожу на сайт, я вижу полный исходный код этой конкретной страницы в обычном браузере, включая div для строки, завершающей страницу.
Конечно, с более длинным набором результатов обычный браузер не будет отображаться, так как Javascript загружается лениво, поэтому я искал способ для Selenium дождаться загрузки всех результатов.
Ниже я использовал код ожидания по адресу: https://selenium-python.readthedocs.io/waits.html
Следующая ошибка тайм-аута для этой конкретной страницы:
try:
element = WebDriverWait(driver,100).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))
finally:
print('done with webdriver wait anyway')
Выдается ошибка:
in <module>
element = WebDriverWait(driver, 100).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "_3t0c")))
File "..longFilePath....\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
ничего не отображается после Message:
РЕДАКТИРОВАТЬ: ошибка ниже отличается от ошибки из-за отсутствия скобок, как указано ниже @QHarr спасибо:
in <module>
element = WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located(By.CLASS_NAME, "_3t0c"))
TypeError: __init__() takes 2 positional arguments but 3 were given
NB, если я закомментирую этот цикл try, я все равно смогу получить все результаты на этой странице.
В противном случае я попытался заставить Selenium дождаться окончания класса div результатов, а также ошибку тайм-аута при тайм-ауте = 100, я вижу загрузку страницы, вероятно, менее чем за 20 секунд в Selenium.
Но я только что попробовал с другим классом = "_32mo", который, похоже, также имеет по одному имени в списке, и это, по-видимому, не истекло.
Я новичок в Selenium и действительно новичок в веб-скрейпинге, мне просто любопытно, может ли кто-нибудь объяснить, что может происходить?