zoukankan      html  css  js  c++  java
  • centos 无界面 服务器 安装chrome部署chromedriver

    转:https://blog.csdn.net/u013849486/article/details/79466359 

    基本 做完了,要弄进docker里面去了的时候,才搜到 docker-chromium 基础镜像,和前辈走过的路,也许这样更方便吧,而且生产环境 就是linux-centos所以 不如一直在Linux或者docker里开发,我一直在mac里开发,所以迈过了很多坑~

    http://blog.csdn.net/littlebrain4solving/article/details/77102084可以参考吧~。。。

    说在头里,的确比post 模拟,省很多事,也会慢很多,但最麻烦的,就是 都是坑,没人踩过的坑。

    在弄项目过程中,大概做了2个月吧,代码量根本不多,500行python,就是卡在了无数的坑中。

    最难忘的一个坑就是,我在mac开发,类Linux,结果测试放到centos生产环境,一系列崩塌~~

    所以一定要有无尽崩溃的准备,再继续读下去~

    一个重大坑就是 ,ssl验证,没弄太清楚,反正 Linux centos无界面访问 一个https的url失败了,返回了空白页面

    类似<html><body></body></html>,stackoverflow 搜到了类似结果,但是是phantomjs的所以改用phantomjs,

    可行,参考:

    https://stackoverflow.com/questions/29463603/phantomjs-returning-empty-web-page-python-selenium/36159299#36159299

    重点就在于

    driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true', '--ssl-protocol=TLSv1'])
    这个ignore 起了作用,我尽力搜索,以及尝试在chrome 里这样操作,失败了~
    网上有很多经验,这里呢根据我的实际情况,算是总结,算给大家提供借鉴了。

    服务器

     uname -a

    Linux VM_171_246_centos 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

    业务情况是 python + selenium + chromedriver

    python和selenium的安装啊部署都不介绍了,网上有其他总结,新手来说也算挺多事,但也算有很多经验,就不在这里说了。

    因为简单的模拟post请求,既复杂又可能无法达到预计目标,甚至仅仅作为初期项目模型的构建而临时采用,selenium的引入就要选择实际的浏览器,我推荐chrome因为没,没过别的,经力时间有限,有留言说其他的不好。

    首先要安装chrome,http://blog.csdn.net/xds2ml/article/details/52982748

    我是看这位朋友的弄的,只看1,2点装好就行了,而且第1点中要记得换行应该是这样的,应该是,朋友上传后被排版弄乱了。

    [google]
    name=Google-x86_64
    baseurl=http://dl.google.com/linux/rpm/stable/x86_64
    enabled=1
    gpgcheck=0
    gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
    第二点的yum update可以不弄,我是没弄,yum不太懂,朋友们可以拓展。

    然后是chromedriver的部署,首先要搞清chrome和其driver的对应关系,我用的是chrome-v64和driver2.3.5

    对应关系在这位朋友这,http://blog.csdn.net/cz9025/article/details/70160273。

    对应下载在这,记得看清更新日期,2.9比2.3.5要旧,我写这篇博客时最新的是2.3.6。

    http://npm.taobao.org/mirrors/chromedriver/

    然后就是将driver放在linux某个地方 zip格式就unzip,得到运行文件就记下路径(pwd)

    部署就算ok了,然后是如何无界面使用。

    一般推荐是Xvfb,但是都有点旧了可能,也听说这样是可以的,所以我尝试了chrome简单的参数配置,是可以的。

    关键点就是 记得给server配一个其他用户,root用户启动会失败。不知为啥,其他用户是可以的。


    #from pyvirtualdisplay import Display

    from selenium import webdriver

    #display = Display(visible=0, size=(800, 600))

    #display.start()

    chrome_opt = webdriver.ChromeOptions()

    chrome_opt.add_argument('--headless')

    chrome_opt.add_argument('--disable-gpu')

    #chrome_opt.add_argument('--ignore-certificate-errors')

    try:

            a=webdriver.Chrome(chrome_options=chrome_opt,executable_path='/usr/bin/google-chrome/chromedriver')

    except Exception as e:

            print(e)

            #display.stop()

    else:

            a.get("http://www.baidu.com")

            print(a.title)

            a.quit()

            #display.stop()

    python test.py

    输出

  • 相关阅读:
    11.8-ros-navigation解析
    8.14-rqt_common_pluggins 详解
    8.1-roscomm详解
    8.15-ros-bag使用
    7.26-rosbridge-suit 解读
    7.26-roscpp_overview详解
    7.26-ROS其他有价值模块
    java dbutils查询数据库时无法给部分字段赋值原因
    java_获取多个文件夹下所有.java源码的总行数
    正则表达式-1-初识正则表达式
  • 原文地址:https://www.cnblogs.com/a00ium/p/10264076.html
Copyright © 2011-2022 走看看