远程ubuntu 20.04服务器运行python+selenium+pyautogui 爬虫解决方案 ...

打印 上一主题 下一主题

主题 689|帖子 689|积分 2067

配景
   已经开辟了一套基于python+selenium+pyautogui的爬虫脚本,通过mobaxterm远程Ubuntu服务器,让脚本在服务器上一直运行,必要用到虚拟图形界面
  1、安装Google Chrome:

起首,利用wget命令下载Google Chrome的最新稳定版.deb包:
  1. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
复制代码
然后,利用dpkg命令安装下载的.deb包:
  1. sudo dpkg -i google-chrome-stable_current_amd64.deb
复制代码
如果在安装过程中遇到依靠题目,可以利用以下命令来解决:
  1. sudo apt-get install -f
复制代码
如果有以下类似报错:
   dependency problems - leaving unconfigured Processing triggers for
mime-support (3.64ubuntu1) … Errors were encountered while processing:
google-chrome-stable
  执行以下命令,即可以解决报错
  1. apt --fix-broken install ./google-chrome-stable_current_amd64.deb
复制代码
安装完成后,可以通过运行以下命令来查抄Chrome的版本:
google-chrome --version
2、安装ChromeDriver:

访问 https://googlechromelabs.github.io/chrome-for-testing/#stable 这个地址去下载更新的chromedriver
  1. wget  https://storage.googleapis.com/chrome-for-testing-public/127.0.6533.119/linux64/chromedriver-linux64.zip
复制代码
然后到目录中执行:
  1. unzip chromedriver-linux64.zip
  2. cd chromedriver-linux64
  3. mv chromedriver /usr/bin
复制代码
3、安装虚拟表现器

利用 Xvfb(X Virtual Framebuffer)可以模拟一个虚拟的表现环境,这对于必要图形界面但不必要实际表现输出的自动化脚本非常有效。以下是在 Ubuntu 服务器上设置 Xvfb 的步调:

  • 安装 Xvfb:
    在 Ubuntu 服务器上,你可以通过以下命令安装 Xvfb:
    1. sudo apt-get update
    2. sudo apt-get install xvfb
    复制代码
  • 启动 Xvfb:
    利用 Xvfb 启动一个虚拟表现。通常,我们利用 :1 作为虚拟表现的表现器编号:
    1. Xvfb :1 -screen 0 1366x768x24 &
    复制代码
    这条命令会启动一个虚拟的 1366x768 分辨率,24 位颜色深度的表现器。
    查看启动的虚拟表现器
    1. ps aux | grep Xvfb
    复制代码
  • 配置环境变量:
    为了让应用步伐利用这个虚拟的表现环境,你必要设置 DISPLAY 环境变量。在你的脚本或启动命令中添加以下行:
    1. # 启动虚拟屏幕 nohup Xvfb :1 -screen 0 1366x768x24 &
    2.   sleep 3  # 等待3秒,确保 Xvfb 启动完成  # 利用虚拟屏幕 export DISPLAY=:1 # 运行搜价服务脚本 cd /home/hello/spider  nohup python3 spider.py > pricing.log 2>&1 & if [ $? -ne 0 ]; then       echo "Error running spider.py"       exit 1   fi   echo "Pricing script have been executed successfully."
    复制代码
    确保在调用 Python 脚本之前设置这个环境变量。
  • 运行你的 Python 脚本:
    现在你可以运行你的 Python 脚本了。如果脚本必要图形界面,它将利用 Xvfb 虚拟的表现环境而不是尝试毗连到一个真实的表现器。
  • 自动化启动 Xvfb:
    如果你盼望每次服务器启动时自动启动 Xvfb,你可以将其添加到 /etc/rc.local 文件中(如果你的系统利用 System V init),或者作为一个服务利用 systemd 来管理。
    利用 systemd 创建一个服务的示例:

    • 创建一个新的服务文件,例如 /etc/systemd/system/xvfb.service:
      1. [Unit]
      2. Description=Start Xvfb for headless operation
      3. [Service]
      4. ExecStart=/usr/bin/Xvfb :1 -screen 0 1366x768x24 -ac
      5. Restart=always
      6. [Install]
      7. WantedBy=multi-user.target
      复制代码
    • 启用并启动服务:
      1. sudo systemctl enable xvfb.service
      2. sudo systemctl start xvfb.service
      复制代码

利用 Xvfb 的好处是,你可以在没有物理表现器或 X11 转发的环境下运行必要图形界面的应用步伐。这对于服务器环境或持续集成/持续摆设(CI/CD)流程非常有效。
运行报错

运行脚本报错题目:
   buntu报错selenium.common.exceptions.SessionNotCreatedException:
Message: session not created: Chrome failed to start: exited normally.
(session not created: DevToolsActivePort file doesn’t exist) (The
process started from chrome location
/snap/chromium/2925/usr/lib/chromium-browser/chrome is no longer
running, so ChromeDriver is assuming that Chrome has crashed.)
  可能是代码中 chromedriver_path 的位置配错了
查看 chromedriver 的位置利用 which chromedriver
其他

   虚拟框架(如 Xvfb)和 ubuntu-desktop、xfce4、lxde等图形界面有啥区别?
  Xvfb 和 ubuntu-desktop 是两个差别的组件,它们在功能和用途上有显着的区别:

  • Xvfb (X Virtual Framebuffer):

    • Xvfb 是一个虚拟的表现服务器,它模拟了一个 X 服务器的运行环境,但是不提供实际的图形输出。这意味着它不会表现任何图形界面,但它允许图形应用步伐认为它们正在与一个表现器交互。
    • 它主要用于自动化测试、服务器环境或者任何必要图形界面但不必要实际表现输出的环境。
    • Xvfb 通常用于开辟和测试必要图形界面的应用步伐,由于它可以在没有物理表现器或图形硬件的环境下运行。

  • ubuntu-desktop:

    • ubuntu-desktop 是 Ubuntu 操作系统的桌面环境,它提供了一个完整的图形用户界面(GUI),包括窗口管理器、桌面环境、系统菜单和其他用户交互工具。
    • 它允许用户通过图形界面与操作系统进行交互,包括启动应用步伐、管理文件和执行其他任务。
    • ubuntu-desktop 通常用于个人电脑或工作站,为用户提供了一个友好的图形界面来操作电脑。

主要区别:


  • 用途: Xvfb 主要用于开辟和测试,而 ubuntu-desktop 用于日常利用和交互。
  • 图形输出: Xvfb 不提供图形输出,而 ubuntu-desktop 提供完整的图形用户界面。
  • 环境依靠: Xvfb 可以在没有图形硬件的环境下运行,而 ubuntu-desktop 必要图形硬件来表现界面。
  • 用户交互: Xvfb 不提供用户交互界面,ubuntu-desktop 提供了完整的用户交互环境。
Xvfb 是一个无头(headless)的解决方案,适用于必要图形界面支持但不必要表现给用户看的应用步伐,而 ubuntu-desktop 是一个完整的桌面环境,提供了用户可以直接交互的图形界面。
一开始把这两者搞混了,以为只要安装了图形界面就可以运行爬虫了,结果打开的是本机的谷歌浏览器,利用了x11转发,只要一关闭mobaxterm,脚本就报错。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表