Вы можете дождаться загрузки страницы явно, используя time.sleep()
, что, вероятно, даст желаемый конечный результат. Тем не менее, это не лучшая практика и может в конечном итоге ждать дольше, чем страница, необходимая для загрузки.
Я бы рекомендовал вместо этого использовать Selenium, который имеет множество полезных функций, связанных с этим; конкретно это может неявно ждать.
Ниже описано, как вы можете использовать Selenium для ожидания загрузки счетчика и больше не ждать.
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
url = 'https://www.theworldcounts.com/counters/shocking_environmental_facts_and_statistics/world_population_clock_live'
driver = webdriver.Firefox()
driver.get(url)
try:
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//*[@id=\"counters_number_interval_5\"]")))
counter = driver.find_element_by_xpath("//*[@id=\"counters_number_interval_5\"]").text
print(counter)
except TimeoutException:
print("Timed out, couldn't load the page in time")
Вам нужно будет установить Selenium, но это все равно что установить BeautifulSoup - просто используйте pip install selenium