情况
我有一个简单的python脚本来获取给定URL的HTML源:
browser = webdriver.PhantomJS() browser.get(url) content = browser.page_source
有时,URL指向外部资源加载缓慢的页面(例如,视频文件或非常慢的广告内容)。
在完成.get(url)请求之前,Webdriver将等待直到加载了这些资源。
.get(url)
注意:由于其他原因,我需要使用PhantomJS而不是requests或urllib2
requests
urllib2
问题
我想在PhantomJS资源加载上设置一个超时,以便如果资源加载时间太长,浏览器只会认为它不存在或其他原因。
这将允许我.pagesource基于浏览器已加载的内容执行后续查询。
.pagesource
关于webdriver.PhantomJS的文档非常薄,我还没有找到类似的问题。
提前致谢!
PhantomJS提供了resourceTimeout,可能适合您的需求。我在这里引用文档
resourceTimeout
(以毫秒为单位)定义了超时,在此超时之后,所请求的任何资源将停止尝试并继续处理页面的其他部分。onResourceTimeout回调将在超时时被调用。
因此,在Ruby中,您可以执行以下操作
require 'selenium-webdriver' capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.resourceTimeout" => "5000") driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities
我相信Python,就像(未经测试,仅提供逻辑,您是Python开发人员,希望您能弄清楚)
driver = webdriver.PhantomJS(desired_capabilities={'phantomjs.page.settings.resourceTimeout': '5000'})