转: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

输出

centos 无界面 服务器 安装chrome部署chromedriver的更多相关文章

  1. linux无界面模式安装selenium+chrome+chromedriver并成功完成脚本(亲测可用)

    环境:docker centos 7.4 能通外网 写好的selenium脚本. 具体步骤: 一:安装selenium  这是最简单的 直接利用 pip3 install selenium 二 安装c ...

  2. XVFB实现selenium在linux上无界面运行安装篇

    selenium在linux上无界面运行,其实是非常简单的.具体的方法有使用HtmlUnitDriver或者PhantomJSDriver,有时间我会写写关于这两个东东的文章,其实基本和ChromeD ...

  3. Ubuntu 无界面使用selenium chrome + headless

    1. 安装 selenium : sudo pip install selenium 2. 安装 chromdriver: 进入 淘宝镜像源 下载 chromdriver, 可以查看 notes.tx ...

  4. 【Linux】【Selenium】安装Chrome和ChromeDriver的配置

    转自:https://www.cnblogs.com/longronglang/p/8078898.html 1.安装chrome sudo apt-get install libxss1 libap ...

  5. linux安装chrome及chromedriver(转)

    1.chrome: curl https://intoli.com/install-google-chrome.sh | bash 1.1.centos安装chrome: 從 Google 下載最新版 ...

  6. CentOS 6.4编译安装和部署Zabbix 2.0版本监控(中文)

    [一].zabbix简介 zabbix是一个基于web界面的提供分布式系统监视以及网络监视功能的企业级开元解决方案 zabbix由2部分构成,zabbix_server和可选组件zabbix_agen ...

  7. 自学linux(安装系统,图形化界面,安装chrome)STEP1

    1. 下载虚拟机VMware并安装 破解版: https://www.xitmi.com/2417.html 2. 下载centos7,6据说已经找不到了? 阿里云镜像: https://mirror ...

  8. CentOS 6.4 yum安装chrome

    CentOS 6.4安装chrome浏览器 vim /etc/yum.repos.d/CentOS-Base.repo 根据你的系统增加一个节点 32-bit [google] name=Google ...

  9. python+ubuntu+selenium安装chrome和chromedriver

    请确保selenium已经安装成功,没安装的可以pip install selenium 安装chrome 在终端输入 下载安装包 wget https://dl.google.com/linux/d ...

随机推荐

  1. beego 导入一个普通的包都会执行init方法,如果是struct就不会执行

    default.go package controllers import ( "beego-test/models" "beego-test/service" ...

  2. php高级技巧总结

    通过对<深入理解PHP:高级技巧.面向对象与核心技术>这本书的学习,总结出常用的php高级技巧,也方便自己以后查阅;我认为该书是php高级教程的葵花宝典,哈哈.里面的内容很实用,尤其是在项 ...

  3. (linux)idr(integer ID management)机制

     最近研究进程间通信,遇到了idr相关的函数,为了扫清障碍,先研究了linux的idr机制. IDR(integer ID management)的要完成的任务是给要管理的对象分配一个唯一的ID,于 ...

  4. vue axios拦截器介绍

    关于axios的拦截器是一个作用非常大,非常好用的东西.分为请求拦截器和响应拦截器两种.我一般把拦截器写在main.js里. 1. 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请 ...

  5. webform中实现SQL Sever2008数据库数据分页查询

    1 分页     1.1         数据库中存储过程             已知 当前页  pageIndex  页容量 pageSize             求  总页数 pageCou ...

  6. html5--5-2 绘制直线

    html5--5-2 绘制直线 学习要点 如何在HTML5文档中添加canvas元素 canvas的属性 了解canvas坐标系 了解script元素 绘制一条直线(准确的说是线段) 什么是canva ...

  7. innerText和innerHTML

    起因 由于公司的项目以前不考虑浏览器的兼容性问题,当时只考虑ie8浏览器,封装的控件也只针对ie8,我后面的做的时候,也就针对ie8,最近发现,封装的日期控件,在firefox竟然没法显示出来,去看J ...

  8. 【转载】Unity3D的断点调试功能

    原文链接:http://liweizhaolili.blog.163.com/blog/static/162307442013214485190/    断点调试功能可谓是程序员必备的功能了.Unit ...

  9. java虚拟机内存溢出和泄漏实例

    测试参数设置: 1.循环调用new A()实现堆溢出,java.lang.OutOfMemoryError: Java heap space, 虚拟机参数:-Xms1M -Xmx1M -XX:+Hea ...

  10. BZOJ_3781_小B的询问_莫队

    BZOJ_3781_小B的询问_莫队 Description 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值 ...