2016-03-07 60 views
2

我通過Selenium運行我的無頭(PhantomJS)瀏覽器的網站有不同的時區,所以我得到許多條目的錯誤日期。因此,我的結果顯示錯誤的日期/時間(我在美國東部時間,看起來像網站默認是格林威治標準時間)。刮硒:改變時區

我從this網站刮。您可以瞭解我如何通過SO here上一個問題刮取日期。但是請注意,我目前並不是在拼搶遊戲的時間,所以我不希望將其納入解決方案中。

同樣的問題被問到here但我不知道如何測試'顯而易見'的解決方案來檢查網站默認的時間。我想有人會從客戶那裏請求一段時間,並從當前時間開始加/減小時數?有人可以告訴我該怎麼做和/或如果有更好的方法。

編輯:我想要的是將網站抓取的數據從默認(GMT)更改爲我的時間(EST)。這樣可以避免不必要的時間增加;日期會反映他們對我的看法。

這裏的,據我已經得到了:

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() 

但我無法得到它的點擊。我應該在尋找一個班級嗎?

+1

在右上角,你可以選擇你的時區。我相信EST = GMT-5。您可以使用硒從下拉列表中選擇正確的時區。這應該可以解決你的問題。 – Maecky

+0

明白了,現在我需要弄清楚如何用Selenium做到這一點。例如:'Select(driver.find_element_by_class(「selected」))。select_by_value(15).click()'? – noblerthanoedipus

回答

1

只要到該網址:

driver.get('http://www.oddsportal.com/set-timezone/15/') 
+0

這個答案比另一個幫助更多。感謝您的迴應 – noblerthanoedipus

3

測試的一個更好的想法是,使用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()