您的位置: 网站首页> selenium教程> 当前文章

selenium谷歌浏览器崩溃out of memory彻底解决

老董2021-08-14194围观,137赞

点击领取>>python全套教程
点击领取>>js逆向_app逆向_安卓群控

  想做web自动化,有能力的同学可以自己封装个浏览器,不会的同学就玩chromedriver驱动浏览器并且忍受着他的各种大坑,关于selenium的坑和bug可以参考selenium坑大全

  无论是selenium操作谷歌浏览器还是node.js驱动谷歌浏览器都会遇到 喔唷,崩溃啦 这个画面,如果没有遇到说明操作的不够多。网上各种帖子都是让删除cookie、删除缓存、用无痕模式启动、或者增加一些启动参数配置;经过测试这些都没有毛用。这个问题的本质原因是谷歌浏览器内存回收问题。

  一 代码逻辑层面的解决

  1、尽量把脚本各种可能异常(非崩溃卡死的异常)放在其他函数里面捕获。

  2、在主函数里面再加try except语句来捕获异常,一旦有异常就直接driver.quit() 然后重启一个driver。(执行driver.quit()后,浏览器和chromedriver进程不会立刻从内存消失,为了避免内存浪费可以附加1个杀死当前脚本chromedriver进程的命令)

  大部分情况下上面这种逻辑是可以走通的不会出问题。但是某些场景会发生浏览器卡死崩溃着,脚本没有抛异常。

  二 定时重启

  要想彻底解决这个问题就可以采用定时重启。可以单独写1个control.py脚本,里面用定时任务模块让功能脚本每隔30分钟重启一次。但是需要留意2个问题。

  1、这种方式需要额外增加一些逻辑,以关键词排名查询的爬虫脚本为例,每次重启之前需要先去重那些已经抓取过的词,确保重启脚本后从剩余的词开始,每个人去重的实现方式不同,各自发挥把。

  2、我是用直接杀死chromedriver及浏览器进程的方式实现的重启(有方法可以精准杀死chromedriver启动的浏览器的),直接杀死进程会在C盘临时文件夹下生成大量的临时文件,需要用脚本删除下这些文件,否则说不定哪天C盘就爆满了。

  三 1个简单富有技巧的方式解决

  上面2种方法就够用了,我用了一段时间定时重启后突然灵感一发想到了1个其他方法,不需要重启,不需要对浏览器做什么配置即可解决。该方法比较有技巧性。愿意了解的加我并打赏一桶泡面我告诉你(拒绝白嫖!)

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    selenium谷歌浏览器崩溃out of memory彻底解决文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 博主微信:a772483200