51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

无界面 Ubuntu 服务器搭建 selenium + chromedriver 实现 Python 自动网页截图

之前我们记录了 Windows 桌面系统下 selenium 的网页截图,在无界面的 Ubuntu 系统稍微麻烦一点点,本文记录实现过程。

简介 {#简介}

  • selenium + chromedrive 在 Windows 或者说有界面的操作系统下比较容易,对于服务器来说他没有界面,还让他截图确实有点强人所难,但是活还是可以想办法干的

实现思路 {#实现思路}

  • 安装 xvfb 工具虚拟化图像输出设备,假装有个显示器
  • 使用 webdriver 的无沙盒模式
  • 过程中需要谷歌浏览器、浏览器驱动、selenium 版本配套

有用的小操作 {#有用的小操作}

卸载 Chrome {#卸载-Chrome}

  • 如果需要卸载现有的 Chrome,可以使用 apt-get 命令

查看 Ubuntu 版本 {#查看-Ubuntu-版本}

  • 通过若干命令可以查看 Ubuntu 版本
    • cat /etc/issue
    • cat /proc/version
    • uname -a
    • lsb_release -a
    • cat /etc/lsb-release

查看当前 Chrome 浏览器版本 {#查看当前-Chrome-浏览器版本}

  • 安装好 Chrome 浏览器后

  • 如果有界面的话可以用 Chrome 访问 :chrome://version

查看当前 Chrome 浏览器对应的驱动版本 {#查看当前-Chrome-浏览器对应的驱动版本}

  • 假设我已知自己的浏览器版本为 : 109.0.5414.75

  • 用浏览器访问链接:

  • 例如我的链接就是 :

  • 访问这个链接,可以看到对应的驱动版本:

查看下载好的 Chromedriver 的版本 {#查看下载好的-Chromedriver-的版本}

  • 如果已经下载好了 chromedriver 文件,由于文件名称上不带版本号,直接读不出来

  • 想要知道版本号,可以直接运行该文件,在输出的日志信息中可以看到版本号:

最新版 Chrome 搭建流程 {#最新版-Chrome-搭建流程}

安装 Chrome {#安装-Chrome}

  • 访问 Chrome 官网:https://www.google.cn/intl/zh-CN/chrome/

  • Linux 版本在最下面的 其他平台

  • 选择 Linux,可以下载 deb 的 Chrome 安装包

  • 安装 deb 包

  • 依赖如果报错,安装依赖:

下载、配置 chromedriver {#下载、配置-chromedriver}

安装 selenium {#安装-selenium}

  • 当前 selenium 版本最高为 4.8.0,如果安装了最新的 Chrome 和 driver,可以直接安装最高版本的 selenium

旧版本 Chrome 搭建流程 {#旧版本-Chrome-搭建流程}

  • 对操作系统版本要求不高,需要安装旧版本的 Chrome 可以参考此流程

安装 Chrome {#安装-Chrome-2}

如果不完全清楚那个版本的浏览器才能正常运行,可以参考这个可用的版本:69.0.3497.100

  • 下载 google-chrome-stable deb 包 :
  • 安装
  • 可能有依赖报错,安装所需的依赖

下载、配置 chromedriver {#下载、配置-chromedriver-2}

  • 下载上述 Chrome 对应的 chromedriver
  • 解压
  • 配置环境变量,将解压出来的 chromedriver 文件添加到系统路径中

  • 或者拷贝到 /usr/bin 目录下

安装 selenium {#安装-selenium-2}

  • 当前 selenium 版本最高为 4.8.0,但是该版本对于上述 Chrome 版本过高,如果你安装了上述 Chrome需要安装 4.1.3 版本的 selenium

其他环境 {#其他环境}

安装 xvfb {#安装-xvfb}

  • 安装虚拟输出设备:

启动 Xvfb {#启动-Xvfb}

  • 启动虚拟化输出设备,设置分辨率
  • 设置输出设备

Python 调用 selenium 保存截图 {#Python-调用-selenium-保存截图}

  • 至此核心环境已经配置完成了

  • 创建 Python 脚本文件 test.py,内容为:

  • 执行脚本:

  • 等了半天,如果没报错而且输出:

    说明是没啥毛病了

  • 过程中我保存了截图

  • 图是截了,中文显示不了,这是系统中文字体库没有安装的问题

安装中文字体库 {#安装中文字体库}

  • 执行命令:

最终效果 {#最终效果}

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/tools/selenium-screenshot/ubuntu-selenium-chrome/ubuntu-selenium-chrome/

赞(0)
未经允许不得转载:工具盒子 » 无界面 Ubuntu 服务器搭建 selenium + chromedriver 实现 Python 自动网页截图