跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python -selenium 控制 chrome 遇到浏览器卡顿并卡住整个程序
未分類
1 4 月 2020

Python -selenium 控制 chrome 遇到浏览器卡顿并卡住整个程序

Python -selenium 控制 chrome 遇到浏览器卡顿并卡住整个程序

資深大佬 : lasuar 76

用了 selenium 有好久了,卡住之后,连程序都停滞了,就像时间停止了一样,没有任何日志。。
这个问题一直没当回事,每次都是起多个浏览器,某个卡住了还有别的在工作,过了许久它又恢复了,查了下说是 chrome 的原因,使用别的浏览器说没有这个问题(未尝试),想来咨询下各位 zs 爬友~,现实中要找到 zs 爬友太难了,v 站真是个好地方~~感谢感谢

大佬有話說 (17)

  • 主 資深大佬 : lasuar

    别的浏览器如 firefox、phantomjs

  • 主 資深大佬 : lasuar

    比如等待某个元素最多 30s,卡住的表现就是它能等一天

  • 資深大佬 : SjwNo1

    那就先尝试一下别的浏览器

  • 資深大佬 : shiran3f

    我的处理方式很暴力,定时 kill 所有相关进程…你会发现 chrome 开了一堆进程。

  • 資深大佬 : wzwwzw

    @shiran3f +1 我也是这样子处理的,每个任务周期结束之后杀掉所有 chrome 的进程,还有 chromedrvier 的进程,如果不涉及到复杂操作可以用 splash。

  • 資深大佬 : sxd96

    selenium 不是专门做爬虫的,长时间跑确实会有问题。只能定时 kill 重启。

    另外,可以试试 puppeteer

  • 資深大佬 : retanoj

    @shiran3f
    定期 kill 进程+1

  • 主 資深大佬 : lasuar

    @shiran3f 我先尝试别的浏览器试试
    @sxd96 puppeteer 不也是控制 chrome 的吗

  • 主 資深大佬 : lasuar

    @shiran3f 好的谢谢,请问下如何准确找到爬虫启动的 chrome 进程呢

  • 主 資深大佬 : lasuar

    @wzwwzw 好的谢谢,请问下如何准确找到爬虫启动的 chrome 进程呢

  • 資深大佬 : wzwwzw

    @lasuar 直接全部杀死呗,可以用 docker 或者用虚拟机运行爬虫,这样子最省事。

  • 主 資深大佬 : lasuar

    @wzwwzw ok

  • 資深大佬 : andylsr

    卡住是怎么个卡法, 我一般会尝试 reflush, 如果确实进程死了那就只能 kill 了, 启动时获取一下系统进程列表, 启动后再获取一下, 一对比就知道启动了哪些 chrome, 如果问题经常会碰到那就先做个测试, 定期重启一下, 或者再写个小脚本做监测?

  • 資深大佬 : shiran3f

    @lasuar #8 用 @wzwwzw #11 的方法是最省事了,我是记录每次启动后 chrome、seleium、chromedirver,Xvbf 的进程号。因为我是以一次任务启动一次,前后对比来看是否 kill 干净。

  • 資深大佬 : soho176

    用 firefox,我用 chrome 总出问题,换成了 firefox 好了

  • 資深大佬 : guochao

    这种进程不退出的问题可以尝试下 linux 的 systemd 或者直接 cgroup,或者 docker。docker 下面就是得把沙箱关掉,麻烦一些。

    我们开发环境和生产都是 Fedora/CentOS,开着 SELinux。用的是 puppeteer。遇到的问题是这样,有的时候 chromium 本身父进程会崩溃,或者 blink 的渲染进程 bug 阻塞了通信导致 timeout,最后无法正确关闭。解决办法就是利用 cgroup 记录 pid,顺便限制一下资源占用,退出时一次性把这个 cgroup 下所有 pid 杀死。

    chrome 的 devtools 协议的话,还可以尝试一下 node 的 puppeteer 和 golang 的 chromedp,都是直接启动 chrome/chromium 不需要 chromedriver 的

  • 主 資深大佬 : lasuar

    @guochao 好的,感谢!

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具