zoukankan      html  css  js  c++  java
  • 在centos,docker中安装HeadlessChrome

    centos6中安装chrome与chrome-driver,中间走了很多弯路,遇到很多坑,现将详细步骤总结如下。参考博客链接:https://blog.csdn.net/u013849486/article/details/79466359

    首先是在centos6里安装,在网上搜了很多资料,主要分为在线安装和离线安装,在线安装需要找到合适的源,但是Google官网的源非常容易导致失败,有兴趣的可以找其他的源。

    可以参考这个网站,https://www.tecmint.com/install-google-chrome-on-redhat-centos-fedora-linux/

    我采用的是离线安装,首先介绍在centos上安装

    一、下载chrome,chrome-driver

    可以通过下面网站下载各类机型不同版本的chrom,我用的是64.0.3282.119_x86_64.rpm

    下载地址:https://www.landiannews.com/archives/36966.html

    对应的chrome-driver可以通过这个网站下载,http://npm.taobao.org/mirrors/chromedriver/

    二、安装

    1,安装chrome是,一定要使用yum安装,因为chrome需要安装几个依赖包,

    1 yum localinstall -y 64.0.3282.119_x86_64.rpm 

    2,解压chromedriver_linux64.zip,

    3,启动chrome,一定要创建一个非root用户执行chrome的启动命令,猜测可能是chrome做了限制!!!

    1 [lv@node105 lib]$ google-chrome &
    2 [1] 5930
    3 [lv@node105 lib]$ 
    4 (google-chrome:5930): Gtk-WARNING **: cannot open display: 出现这个提示就说明chrome启动了

    三、调试

    采用Python执行脚本比较方便,要安装selenium。执行脚本的时候也要使用非root用户!!

     1 首先安装 selenium
     2 pip install selenium
     3 
     4 如果没有pip,要安装pip,centos7下使用yum安装pip
     5 
     6 首先安装epel扩展源:
     7 yum -y install epel-release
     8 
     9 更新完成之后,就可安装pip:
    10 yum -y install python-pip
    11 
    12 安装完成之后清除cache:
    13 yum clean all

    测试脚本如下;test.py,打印出网站的title,就说明成功了: Maven Repository: Search/Browse/Explore。 如果报PATH异常,可以通过chown使非root用户拥有chrome-driver的权限!

     1 #conding=utf-8
     2 from selenium import webdriver
     3 import time
     4 from selenium.webdriver.chrome.options import Options
     5 
     6 chrome_options = Options()
     7 chrome_options.add_argument('--headless')
     8 driver = webdriver.Chrome(chrome_options=chrome_options,executable_path='/sqy/local/lib/chromedriver')
     9 
    10 driver.get("http://mvnrepository.com/")
    11 time.sleep(3)
    12 
    13 print(driver.title)
    14 
    15 driver.quit()

    有很多人推荐使用Xvfb,也可以但是比较复杂,需要安装很多东西,使用Python脚本启动chrome

     1 安装pyvirtualdisplay
     2 pip install pyvirtualdisplay  
     3 
     4 yum install Xvfb
     5 
     6 yum install xorg-x11-fonts*
     7 
     8 yum install libXfont
     9 
    10 yum install xorg-x11-server-Xvfb

     Python脚本

     1 from pyvirtualdisplay import Display
     2 
     3 from selenium import webdriver
     4 
     5 display = Display(visible=0, size=(800, 600))
     6 
     7 display.start()
     8 
     9 
    10 
    11 chrome_opt = webdriver.ChromeOptions()
    12 
    13 chrome_opt.add_argument('--headless')
    14 
    15 chrome_opt.add_argument('--disable-gpu')
    16 
    17 #chrome_opt.add_argument('--ignore-certificate-errors')
    18 
    19 try:
    20 
    21         a=webdriver.Chrome(chrome_options=chrome_opt,executable_path='/sqy/local/lib/chromedriver')
    22 
    23 except Exception as e:
    24 
    25         print(e)
    26 
    27         #display.stop()
    28 
    29 else:
    30 
    31         a.get("http://www.baidu.com")
    32 
    33         print(a.title)
    34 
    35         a.quit()    

    我在这里都是使用了chrome-driver的绝对路径(/sqy/local/lib/chromedriver),也可以通过配置chrome-driver的环境变量,这个大家可以自行决定!

    四、拓展

    docker环境安装chrome,chrome-driver,并制作docker镜像,编写dockerfile

     因为安装chrome需要使用yum安装所以基础镜像最好有yum功能,不然自己安装yum会很麻烦,从docker官方仓库pull最新的centos6的基础镜像就带有yum功能,安装步骤和上面的一样,同样也要创建非root用户启动chrome,执行脚本的时候也要使用非root用户!!!

    在创建docker容器的时候必须注意:docker run -d --restart always --privileged --name chrom_test -v /usr:/sqy -ti cent_chrome:1.0      命令里必须有privileged,给容器的root用户赋予绝对的root权限!  参考连接:容器权限

     最后奉献上我自己的dockerfile,参考链接:dockerfile构建镜像

     1 FROM centos:centos7
    #我自己使用的是我本地的centos的基础镜像,大家可以改成docker官方仓库,centos:7
    2 3 #maintainer 作者 4 5 MAINTAINER sqy 6 7 #add 把包添加到容器的指定目录,如果是tar包会自动解压 8 9 ADD 64.0.3282.119_x86_64.rpm /usr/local/lib 10 11 ADD chromedriver /usr/local/lib 12 13 #workdir 相当于cd到这个目录 14 15 WORKDIR /usr/local/lib 16 17 RUN yum localinstall -y 64.0.3282.119_x86_64.rpm

     ----------------------------------------------------若有不正之处,欢迎指正,不胜感激!!!!!

     

  • 相关阅读:
    独立博客,从零到千万访问,这三年我都做了什么
    Postman使用详解
    Postman安装与使用
    Python爬虫入门教程:超级简单的Python爬虫教程
    《完全用Linux工作》——转载自清华退学博士
    转:一篇搞定Python正则表达式
    文件上传的单元测试怎么写?
    功能性测试分类
    ajax 学习笔记 timer控件
    ajax 学习笔记 updatepannel控件
  • 原文地址:https://www.cnblogs.com/sqy123/p/9057348.html
Copyright © 2011-2022 走看看