情况
我有一个简单的python脚本来获取给定url的HTML源代码:
browser = webdriver.PhantomJS()
browser.get(url)
content = browser.page_source
有时,url指向加载外部资源(如视频文件或广告内容)较慢的页面。
在完成.get(url)
请求之前,Webdriver将等待加载这些资源。
注意:出于无关的原因,我需要使用PhantomJS而不是requests
或urllib2
问题
我想在PhantomJS资源加载时设置一个超时,以便如果资源加载时间太长,浏览器只假设它不存在或其他什么。
这将允许我根据浏览器加载的内容执行后续的.pagesource
查询。
关于webdriver.PhantomJS的Documentation很薄,我还没有发现类似的问题。
提前谢谢!
PhantomJS提供了
resourceTimeout
,这可能适合您的需要。我引用了文档here所以在鲁比,你可以做一些
我相信Python,它类似于(未经测试,只提供逻辑,您是Python开发人员,希望您能理解)
下面是详细的说明,因此TLDR:
当前版本的Selenium的Ghostdriver(在PhantomJS 1.9.8中)忽略resourceTimeout选项,使用webdriver的隐式wait(),设置页面加载超时()并将它们包装在try except块下。
说明
要向Selenium提供PhantomJSpage settings,可以使用webdriver所需的功能,例如:
但是,这里有一个问题:与今天(2014/12/11)PhantomJS 1.9.8及其嵌入的Ghostdriver一样,Ghostdriver(See the Ghostdriver issue#380 in Github)不会应用resourceTimeout。
对于解决方法,只需使用Selenium的超时函数/方法,并在try-except/try-catch块中包装webdriver的get方法,例如
相关问题 更多 >
编程相关推荐