Чтобы конкретизировать примечание pguardiario, если вы используете Chrome devtools для просмотра кнопки в правом верхнем углу, каждая из кнопок вызывает ссылку на https://www.oddsportal.com/set-timezone/n/
, где n
- это код часового пояса.Эти функции фактически вызывают функцию op.selectTimeZone(n)
, которая изменит ваш часовой пояс на экране.Вы можете поэкспериментировать с этим в консоли Chrome, набрав op.selectTimeZone(n)
.
Если это работает для вас, вы можете включить это, эмулируя консольные вызовы javascript, используя, где n
- код для выбранного часового пояса:
driver.execute_script('op.selectTimeZone(n);')
Вы можете добавлять это после каждоговызов инициализации драйвера для принудительной установки часового пояса, например:
for x in range(1, lastpage + 1):
url = "http://www.oddsportal.com/baseball/usa/mlb-" + str(year) + "/results/#/page/" + str(x) + "/'"
driver = webdriver.Chrome()
driver.get(url)
# Set timezone
driver.execute_script('op.selectTimeZone(6);')
# wait until java table loads and then grab data
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.XPATH, '//*[@id="tournamentTable"]')))
odds = element.text
Обратите внимание, что вам может потребоваться поиграть с настройкой таймера ожидания, так как вы добавляете дополнительное выполнение после выбора часового пояса.
Кроме того, вам действительно не нужно сбрасывать вызов драйвера для каждого цикла, если только вы не планируете распараллелить цикл for
.Скорее всего, это будет выполняться намного быстрее, если вы возьмете инициализацию и закрытие драйвера из цикла.
РЕДАКТИРОВАТЬ:
Таким образом, если вы обращаетесь к странице результатов напрямую, вы не сможете установить часовой пояс без запуска перезагрузки на странице.Скорее всего, вам потребуется вывести настройки и загрузить из цикла, например,
driver = webdriver.Chrome()
driver.get('http://www.oddsportal.com/')
# Proc JS on-click for timezone selection button
driver.execute_script("op.showHideTimeZone();ElementSelect.expand( 'user-header-timezone' , 'user-header-timezone-expander' , null , function(){op.hideTimeZone()} );this.blur();")
driver.execute_script('op.selectTimeZone(6);')
for x in range(1, lastpage + 1):
url = "http://www.oddsportal.com/baseball/usa/mlb-" + str(year) + "/results/#/page/" + str(x) + "/'"
driver.get(url)
# wait until java table loads and then grab data
element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.XPATH, '//*[@id="tournamentTable"]')))
odds = element.text
print(odds)
# close temporary chrome screen
driver.close()