selenium
будет иметь ошибки, если страница находится в процессе загрузки, когда вы пытаетесь отправить команды в окно. Вам следует внедрить time.sleep()
или какой-то метод ожидания, специфичный для селена , чтобы убедиться, что страница готова к обработке. Что-то вроде
import time
while True:
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
posts = soup.find_all(some class)
(...)
some logic with the result
(...)
driver.refresh()
time.sleep(5) # probably too long, but I usually try to stay on the safe side
Лучший вариант, вероятно, будет использовать что-то вроде
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
по ссылке выше, которую я разместил, это позволит убедиться, что элемент находится там, не заставляя ждать 5 секунд. Если нужный элемент находится там через 0,0001 секунды, ваш сценарий продолжится после этого времени. Это позволяет сделать тайм-аут произвольно большим (скажем, 120 секунд), не влияя на скорость выполнения.