gpt4 book ai didi

python - Selenium 刮 : changing timezone

转载 作者:行者123 更新时间:2023-11-28 21:47:58 27 4
gpt4 key购买 nike

我通过 Selenium 运行 headless (PhantomJS) 浏览器的网站有不同的时区,所以我得到了很多条目的错误日期。因此,我抓取的结果显示了错误的日期/时间(我在美国东部时间,看起来网站默认是格林威治标准时间)。

我正在从 this 中抓取信息网站。您可以通过之前关于 SO here 的问题了解我是如何抓取日期的。 .但请注意,我目前并没有抓取游戏时间,所以我不想将其纳入解决方案。

问了同样的问题here但我不知道如何测试检查网站默认时间的“明显”解决方案。我想有人会向客户请求时间并从我当前的时间中添加/减去小时数?有人可以告诉我该怎么做和/或是否有更好的方法。

编辑:我想要的是将网站抓取的数据从默认 (GMT) 更改为我的时间 (EST)。这将避免不得不增加时间;这些日期将反射(reflect)它们对我的意义。

据我所知:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
#from selenium.webdriver.support.select import Select

driver = webdriver.PhantomJS(executable_path=r'C:/phantomjs.exe')
driver.get('http://www.oddsportal.com/hockey/usa/nhl/results/')

zoneDropDownID = "timezone-content"

driver.implicitly_wait(5)
zoneDropDownElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(zoneDropDownID))
# Select(zoneDropDownID).select_by_visible_text("Eastern") # strobject has no attribute
test = zoneDropDownID.select_by_visible_text("Eastern").click() # TimeOut exception - not found

driver.close()

但我无法让它点击。我应该改为搜索类(class)吗?

最佳答案

更好的测试方法是使用 chromedriver 或类似的东西。好处是,您可以直观地检查您的脚本在做什么。这是一个示例代码(没有错误处理),可以执行您想要的操作。请注意,chromedriver.exe必须与脚本位于同一位置。

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
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--lang=en")
chrome = webdriver.Chrome(chrome_options=chrome_options)
wait = WebDriverWait(chrome, 300)

import time

chrome.get("http://www.oddsportal.com/hockey/usa/nhl/results/")

dropdown = wait.until(EC.presence_of_element_located((By.ID,"user-header-timezone-expander")))
dropdown.click()

userHeader = chrome.find_element_by_id('user-header-timezone')
time.sleep(2)
ahref = userHeader.find_elements_by_tag_name('a')

for a in ahref:
print(a.get_attribute("text"))
if "Eastern Time" in a.get_attribute('text'):
a.click()
time.sleep(10)
chrome.close()

关于python - Selenium 刮 : changing timezone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35848043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com