20

Seleniumdriver.get (url)等到整页加载。但是一个抓取页面会尝试加载一些死掉的 JS 脚本。所以我的 Python 脚本等待它并且不能工作几分钟。这个问题可能出现在网站的每个页面上。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.cortinadecor.com/productos/17/estores-enrollables-screen/estores-screen-corti-3000')
# It try load: https://www.cetelem.es/eCommerceCalculadora/resources/js/eCalculadoraCetelemCombo.js 
driver.find_element_by_name('ANCHO').send_keys("100")

如何限制等待时间,阻止文件的 AJAX 加载,还是其他方式?

我还在 中测试我的脚本webdriver.Chrome(),但将使用 PhantomJS(),或者可能是 Firefox()。因此,如果某些方法使用浏览器设置的更改,那么它必须是通用的。

4

2 回答 2

41

当 Selenium 默认加载页面/url 时,它遵循默认配置,pageLoadStrategy设置为normal. 为了使 Selenium 不等待整个页面加载,我们可以配置pageLoadStrategy. pageLoadStrategy支持 3 个不同的值,如下所示:

  1. normal(整页加载)
  2. eager(交互的)
  3. none

这是配置的代码块pageLoadStrategy

  • 火狐

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    caps = DesiredCapabilities().FIREFOX
    caps["pageLoadStrategy"] = "normal"  #  complete
    #caps["pageLoadStrategy"] = "eager"  #  interactive
    #caps["pageLoadStrategy"] = "none"
    driver = webdriver.Firefox(desired_capabilities=caps, executable_path=r'C:\path\to\geckodriver.exe')
    driver.get("http://google.com")
    
  • from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    caps = DesiredCapabilities().CHROME
    caps["pageLoadStrategy"] = "normal"  #  complete
    #caps["pageLoadStrategy"] = "eager"  #  interactive
    #caps["pageLoadStrategy"] = "none"
    driver = webdriver.Chrome(desired_capabilities=caps, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get("http://google.com")
    

注意pageLoadStrategyvaluesnormal和是WebDriver W3C Editor's Drafteager的要求,但value as仍然是ChromeDriver实现中的WIP(正在进行的工作) 。您可以在 Python 中 Chromedriver Selenium 的“Eager”页面加载策略解决方法中找到详细讨论nonepageLoadStrategyeager

于 2017-06-27T02:56:51.213 回答
0

@undetected Selenium 答案效果很好,但对于 chrome,部分不起作用,请使用以下 chrome 答案

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
browser= webdriver.Chrome(desired_capabilities=capa,executable_path='PATH',options=options)

于 2022-01-13T12:27:22.173 回答