在CentOS 7.7 x86_64上安装python3的selenium 3模块实录
安装selenium3模块
pip3 install selenium
如果上面的命令因为网络问题,重试多次仍失败,可以尝试下面的命令
pip3 install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
配置selenium相关的环境
下载并安装最新的Chrome版本
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum -y install google-chrome-stable_current_x86_64.rpm
检查安装的Chrome版本
which google-chrome-stable
/bin/google-chrome-stable
使用下面的命令得到Chrome的版本号
google-chrome-stable -version
Google Chrome 81.0.4044.113
使用下面的命令查看帮助
/bin/google-chrome-stable --help
下面对应的ChromeDriver版本,从下面的地址
https://sites.google.com/a/chromium.org/chromedriver/downloads
下载
wget https://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
cp -f chromedriver /usr/bin/
chmod 755 chromedriver
确保chrome和chromedriver版本一致,并且chromedriver的安装位置,需要在python代码中使用
运行测试demo
python3 selenium_demo.py
#!/usr/bin/env python3
#encoding: utf-8
#description: 测试程序控制并驱动Chrome 81
#note:需要安装selenium3,chromedriver和Chrome版本兼容
#date: 2020-04-21from selenium import webdriverif __name__ == '__main__':options = webdriver.ChromeOptions()options.add_argument('--headless')options.add_argument('--disable-gpu')options.add_argument('--no-sandbox')url = 'https://www.baidu.com'browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver", options=options)browser.get(url)print(browser.page_source)browser.quit()
这个python脚本,使用selenium去远程获取指定url的网页源码并打印出来。
关于selenium模块中webdriver各API的使用方法,参见下面的链接
https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
遇到的问题
1.chromedriver下载速度非常慢
解决方法: 测试发现,需要翻墙才能下载速度快,可以从我的ThinkPad T420的Chrome上翻Q下载该文件,再从虚拟机上下载ThinkPad T420的文件。
2.centos7中Chrome通过selenium截图汉字显示为方框
解决方法:在执行截图任务的虚拟机上安装中文字体,比如这里我选择的是最爱的文泉驿微米黑字体,执行下面的命令
wget http://rpmfind.net/linux/centos/7.7.1908/os/x86_64/Packages/wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch.rpm
rpm -ivh wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch.rpm
安装完成之后,直接可以看到字体已经安装成功了。
fc-list :lang=zh
然后打开中文网页就不会乱码了。
3.采用selenium自带截图工具截取的Grafana看板的图片截取不完全
解决方法:经过网上调研和测试发现,能否成功截取全屏,与网页代码的使用有一定关系。试过各种招儿之后,都未能圆满解决,最后我实在没撤了,硬着头皮研究了Grafana页面的代码,发现里面有个唯一的div具有清晰的width和height,直接获取它的值就能大致确定整个截图的大小,从而巧妙解决了这个问题。
找到这个唯一关键的div,并且有尺寸大小,发现只有这个元素的height是真实的
<div class="react-grid-layout layout" style="height: 1590px;">
经过测试,发现下面的方法是可行的, 但是有时候执行不稳定
ele = browser.find_element_by_class_name("react-grid-layout.layout")
print(ele.size)
对于普通的网页,使用常规思路就可以了。具体问题具体分析吧。下面以豆瓣首页截取全屏为例,给出一个具有普遍意义的代码selenium_douban.py实现如下:
#!/usr/bin/env python3
#encoding: utf-8
#description: 实现selenium+chromedriver+python实现豆瓣的全文截取,实测有效
#date: 2020-04-22from selenium import webdriver
import timeoptions = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--dns-prefetch-disable')
options.add_argument('--no-referrers')
options.add_argument('--disable-gpu')
options.add_argument('--disable-audio')
options.add_argument('--no-sandbox')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--allow-insecure-localhost')driver = webdriver.Chrome(options=options)
driver.get('http://www.douban.com')
width = driver.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")
print(width, height)
driver.set_window_size(width + 100, height + 100)
time.sleep(5)
driver.save_screenshot('douban.png')
driver.close()
得到的效果图如下:
在CentOS 7.7 x86_64上安装python3的selenium 3模块实录相关推荐
- 在CentOS 7.7 x86_64上安装python3.7.7
由于Centos 7原本就安装了python2,而且这个python2不能被删除,因为有很多系统命令,比如yum都要用到. [root@VM_105_217_centos Python-3.6.2]# ...
- 在CentOS 7.7 x86_64上安装python3.11.0实录
整个安装过程基本上参照原来的博文 https://blog.csdn.net/tao_627/article/details/105674448 但是这里有新的注意点就是,ssl使用了新的openss ...
- 在CentOS 6.5 x86_64上安装libunwind的问题
1.事由 当时间进入2021年,之前的对CentOS 6.x上的官方依赖仓库和国内镜像仓库都不好使了,如果要安装软件包,是一个痛苦的事情.今天我在一台CentOS 6.5的老机器上安装ats的rpm包 ...
- 在CentOS 6.8 x86_64上安装ATS 6.2.1实录
我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了. ...
- 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录
下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究.操作系统是CentOS 6.6 x86_64. 1.将内核版本升级到最新版 因为我机器上CentOS 6.6的内核版本号是2. ...
- 在CentOS 6.8 x86_64上安装nghttp2最新版及让curl具有http2特性
nghttp2是什么? nghttp2是一个实现IETF官方HTTP/2和HPACK头压缩算法的C库,但不限如此,在C库基础上,还实现了http2的客户端,服务器,代理服务器,以及压测工具.参见官网链 ...
- 在CentOS 6.8 x86_64上安装nginx 1.10.3
本文档记录了完全使用最新源码来编译安装nginx最新版1.10.3,所有的依赖也是最新的,便于第三方nginx模块开发 假定使用root身份安装 目前最新的源码地址汇总 ftp://ftp.csx.c ...
- 在CentOS 7.7 x86_64上安装InfluxDB 1.8.0实录
在InfluxDB官网获取最新稳定版的下载和安装指导 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rp ...
- 在CentOS 6.9 x86_64上安装nginx 1.12.2
比较详细的教程参见以前的博文 http://blog.csdn.net/tao_627/article/details/60957521 这里只给出简略步骤,没有截图,自始至终使用root操作 目前最 ...
最新文章
- 一些关于iText和iTextSharp的旧闻(some old news about iText and iTextSharp)
- Jquery中使用select2插件实现ajax实时请求数据
- redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...
- Hibernate的fetch
- string类的常用函数
- js弹出窗口关闭当前页面,而不弹出提示框
- Golang的调度模型
- matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用
- Linux 中的FHS文件系统风格标准---File Hierarchy Standard
- Node Introduce
- 影响宝宝脾胃健康的3个“真凶”,难怪孩子脾胃总是调不好!
- mysql got signal 11_mysqld got signal 11问题定位
- 安装SQL 2000 企业版
- python 视频文件格式和分辨率转换
- pytorch-psenet实现 并训练自己的数据集
- iphone/ios兼容问题
- 关于拉流端ts时间切片问题导致的直播黑屏问题
- spring 自带的定时器task
- 【读书】-你是人间四月天
- SAP中MIGO子功能配置介绍
热门文章
- 宏使用 Tricks
- linux - centos yum安装LAMP环境
- Linux内核分析——可执行程序的装载
- java.util.concurrent包API学习笔记
- C++查找算法(更新中)
- 计算机函数模式的用处是啥,请问怎么理解计算机中的函数?
- cygwin编译verilator_Windows 安装 verilator
- sublime python配置_sublime python环境配置
- 无监督学习与有监督学习的本质区别是什么_人工智能中的无监督学习
- oracle 复制 mysql_MySQL与Oracle之间互相拷贝数据的Java程序