0
我想抓取whoscored,其中有很多的東西,並需要大量的時間來完全加載。然而,我想要的東西加載得非常快,但仍然執行driver.get(url),直到網頁完全加載。 有什麼辦法可以防止這種情況發生?一旦我定義的某個元素出現在DOM中,就讓get方法返回?我在考慮停止在瀏覽器中的作用。硒需要太多的時間加載一個頁面
我想抓取whoscored,其中有很多的東西,並需要大量的時間來完全加載。然而,我想要的東西加載得非常快,但仍然執行driver.get(url),直到網頁完全加載。 有什麼辦法可以防止這種情況發生?一旦我定義的某個元素出現在DOM中,就讓get方法返回?我在考慮停止在瀏覽器中的作用。硒需要太多的時間加載一個頁面
於是,我找到了這種行爲,我想最好的解決辦法是:
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")
這將停止瀏覽器加載頁面,你仍然可以抓取並與加載的網站進行互動。
您也可以使用像AdBlock或NoScript這樣的附加組件來過濾掉不需要加載的內容 – user2426679
相關:http://stackoverflow.com/q/22404581/771848。 – alecxe