selenium webdriver 怎么抓页面的js error

 我来答
受司大人
推荐于2016-07-11 · 知道合伙人影视综艺行家
受司大人
知道合伙人影视综艺行家
采纳数:20262 获赞数:171846
毕业于浙江广厦,有一定的电脑专业基础和两年工作经验,读过相关书籍多本

向TA提问 私信TA
展开全部
selenium webdriver的硬伤在于它无法真正判断页面上的元素什么时候能生成完毕,换句话说 ,假如获取页面上的元素失败,而这个元素是由js,ajax生成并且是未知的情况下(例如:要抓取网页关键词,但是关键词的内容是什么,一共有几个都是未知的情况下) 你无法判断是元素尚未被生成还是页面原本就没有这个元素导致的获取失败。
刚才说webdriver无法真正判断页面元素生成完毕,但webdriver提供了判断页面是否加载完成的方法,只不过这个加载完成的含义是页面上的html和JS代码加载完成,但js,ajax还可能在html和JS加载完之后执行从而改变页面上的内容,所以像刚才举例的网页上的关键词抓取失败就很难判断是js,ajax没有运行完毕还是页面上原本就没有这个元素导致的。
虽然selenium webdriver没有提供判断页面上的js,ajax是否执行完毕的功能,但不等于完全没有办法判断。官方也承认并不是不可以而是非常困难。昨天群里一位高手也说这种情况需要自行查看页面上的动态脚本代码以得知判断页面执行完的条件。我相信一个第三方库是比较难做到这一点的,即使牛逼到能实现,也不排除页面上有一个持续或者定时与服务器通信的动态脚本在实时改变页面内容,这样一来页面永远没有生成完毕的那一刻。
对于刚才说的抓取页面上未知元素,目前普遍的做法是在程序里面显示指定等待一段时间,确保有足够的时间让它生成,当然,不排除网络太差直到等待超时也来不及生成的情况。如果元素已知,可以显示用selenium webdriver提供的方法显示等待某一个元素在页面上出现后再继续执行下面的代码。
张艳歌520
2018-04-22 · TA获得超过1.3万个赞
知道小有建树答主
回答量:4714
采纳率:70%
帮助的人:265万
展开全部
python的js解析,发现使用Selenium+PhantomJS的方案还是比较适合我的,以下是环境配置教程。Selenium及PhantomJS介绍:Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、MozillaFirefox、Chrome等。PhantomJS是一个服务器端的JavaScriptAPI的WebKit。其支持各种Web标准:DOM处理,CSS选择器,JSON,Canvas,和SVG。安装环境:Windows7(64位)python2.7.8配置过程:1、使用pip安装Selenium,如果没有安装pip的请参考我之前的博客文章。命令:pipinstall-Uselenium2、安装PhantomJS,到PhantomJS的官方网站上下载,然后放到python的安装目录。PhantomJS下载如果想使用Chrome来实现解析的,请下载GG浏览器的相应驱动(同时需要安装chrome浏览器),如上图中的第一个程序,第二个程序就是PhantomJS了。如果想使用Firefox来实现解析,则需要安装Selenium提供的firefox插件,位于python安装目录Lib\site-packages\selenium\webdriver\firefox\webdriver.xpi,请拖入到firefox浏览器中,然后重启浏览器即可。Selenium+PhantomJS使用:使用方法很简单,代码如下,如果成功打印出网站的标题,那么说明已经可以成功使用了。fromseleniumimportwebdriverdriver=webdriver.PhantomJS()#webdriver.Firefox()driver.get('httpn/')printdriver.titledriver.quit()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式