2016-01-06 74 views
0

我想抓取whoscored,其中有很多的東西,並需要大量的時間來完全加載。然而,我想要的東西加載得非常快,但仍然執行driver.get(url),直到網頁完全加載。 有什麼辦法可以防止這種情況發生?一旦我定義的某個元素出現在DOM中,就讓get方法返回?我在考慮停止在瀏覽器中的作用。硒需要太多的時間加載一個頁面

+0

相關:http://stackoverflow.com/q/22404581/771848。 – alecxe

回答

1

於是,我找到了這種行爲,我想最好的解決辦法是:

profile = webdriver.FirefoxProfile() 
profile.set_preference("webdriver.load.strategy", "unstable") 
profile.update_preferences() 
driver = webdriver.Firefox(firefox_profile=profile) 
driver.get(url) 
try: 
    wait = WebDriverWait(driver, timeout=20, poll_frequency=0.1) 
    wait.until(<expectation object>) 
finally: 
    driver.execute_script("return window.stop") 

這將停止瀏覽器加載頁面,你仍然可以抓取並與加載的網站進行互動。

+0

您也可以使用像AdBlock或NoScript這樣的附加組件來過濾掉不需要加載的內容 – user2426679