• Ubuntu server using selenium


    以下所有的安装操作和代码测试都是在Ubunt server 18.04 LTS 64bit服务器版本(命令行无界面版本)进行,编程语言使用了Python3.8.0。
    我自己学习使用,在linux上直接是root用户了。


    一、安装无界面版Chrome

    我是从这个网站上找来的教程,自己尝试后有效:https://blog.softhints.com/ubuntu-16-04-server-install-headless-google-chrome/
    打开网站后往下拉,拉到Solution Install Google Chrome on Ubuntu 16.04 no GUI这个版块:

    1.安装命令
    • 首先尝试执行以下命令
    sudo apt update
    sudo apt install -y libappindicator1 fonts-liberation
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo dpkg -i google-chrome*.deb
    
    • 如果有报错基本上的原因是因为缺少了一些必要的依赖,执行下面命令:
    sudo apt -f install
    sudo dpkg --configure -a
    sudo apt -u dist-upgrade
    sudo apt -y install dbus-x11 xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic xfonts-scalable
    
    // 上面这些命令执行完了后,再次安装,一般能成功了
    
    sudo apt update
    sudo apt install -y libappindicator1 fonts-liberation
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo dpkg -i google-chrome*.deb
    
    2.查看安装结果

    可以通过查看版本号来确定是否安装成功:

    google-chrome --version
    或者
    google-chrome-stable --version
    

    能够打印出版本号就是安装成功了。

    3.安装Chrome驱动

    Chrome驱动尽量到官方网站去下载:https://sites.google.com/a/chromium.org/chromedriver/downloads
    但是没有梯子的话,可以使用备用国内镜像:https://npm.taobao.org/mirrors/chromedriver
    可以使用linux命令wget进行下载,也可以下载到本地后通过lrzsz上传到linux中(lrzsz是Windows系统下xshell独有的功能)。
    Chrome驱动版本不要下错了,不然即使安装好也可能无法使用!先查看一下Chrome的版本,然后下载对应的驱动版本

    // 解压
    sudo unzip chromedriver_linux64.zip
    
    // 将驱动放置到系统的二进制目录下
    cp chromedriver /usr/bin/
    cp chromedriver /usr/local/bin/
    

    检查一下,有了就可以了:

    4.测试
    • 命令行测试
      关于--no-sandbo参数的记录:无论是命令行还是代码,如果是root用户就必须加上--no-sandbo这个参数,否则就会报错!
    google-chrome-stable --headless --no-sandbox --disable-gpu --dump-dom https://www.chromestatus.com/
    // required argument "--no-sandbox" when running as root user. otherwise you would get no sandbox errors.
    
    • 代码测试
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument('-headless')
    options.add_argument('--no-sandbox')
    
    driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
    driver.get("https://www.baidu.com")
    print(driver.title)
    driver.quit()
    

    最终结果:

    5.不写"--no-sandbox"的后果

    代码中注释掉options.add_argument('--no-sandbox')

    肯定会报错:



    二、安装无界面版Firefox

    1.直接用apt命令安装
    sudo apt update
    sudo apt install firefox
    
    2.安装驱动

    selenium要使用Firefox就必须要有其对应的驱动:geckodriver
    这里有个导航网站,主流浏览器的驱动都能从它这里找到:https://selenium.dev/selenium/docs/api/py/

    *同时,网站教程也指出了驱动必须被正确地放置到指定目录下。
    尽量到官方网站上去下载驱动,官方网站:https://github.com/mozilla/geckodriver/releases

    如果因为不可抗力因素导致官方网站打不开,只能用备用网站了。
    备用网站:https://npm.taobao.org/mirrors/geckodriver/(此处以Firefox为例),镜像根网站为:https://npm.taobao.org/
    写随笔日期是2019年11月24日16:38:39,我下载了最新版的驱动:

    可以使用linux命令wget进行下载,也可以下载到本地后通过lrzsz上传到linux中(lrzsz是Windows系统下xshell独有的功能)。
    解压命令:

    sudo tar -xvf geckodriver-v0.26.0-linux64.tar.gz
    

    必须将geckodriver放到系统可执行目录下,/usr/bin/ 或者 /usr/local/bin/
    为保险起见,两个路径中我都有放置驱动。

    cp geckodriver /usr/bin/
    cp geckodriver /usr/local/bin/
    

    3.安装依赖

    Firefox想要使用selenium必须先安装一个系统级的依赖:

    sudo apt install Xvfb
    

    然后安装应用级的python依赖:

    pip install PyVirtualDisplay
    
    4.测试代码
    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    
    options = Options()
    options.add_argument('-headless')
    options.add_argument('--no-sandbox')
    
    driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver', options=options)
    driver.get("https://www.baidu.com")
    print(driver.title)
    driver.quit()
    

    最终结果:

  • 相关阅读:
    前言
    echarts踩坑---容器高度自适应
    vue中刷新页面时去闪烁,提升体验方法
    2018.11.7
    07-sel-express 框架快速搭建案例
    第三方包 vue-resource
    zepto.js-定制zepto步骤
    CSS-单位em 和 rem
    ES6-个人学习大纲
    响应式布局
  • 原文地址:https://www.cnblogs.com/quanquan616/p/11922771.html
Copyright © 2020-2023  润新知