Python3 selenium在CentOS服务端运行
原文地址 https://www.cyberlight.xyz/pa...
最近尝试在服务器端运行selenium,做下此笔记,其间参考了大量相关教程,感谢每一位共享学习记录的网友!
由于windows10使用的Chrome,我继续尝试在CentOS运行,终于成功!以下是学习记录:
环境:CentOS8, Python 3.6.8
一.CentOS上安装Chrome
请确保身份为root,进入CentOS终端,然后依次输入
- wget https://dl.google.com/linux/d..._current_x86_64.rpm
- yum install -y google-chrome-stable_current_x86_64.rpm
查看Chrome版本
- /opt/google/chrome/chrome -version
PS: chrome卸载方法
- yum autoremove -y google-chrome
之后,需要解决不能在root下运行chrome的错误 。Chrome安装的根目录默认在 /opt/google/chrome/ 。进入CentOS终端,输入
- vi /opt/google/chrome/google-chrome
移动光标到最下面,按下键盘的”i”,将 exec -a “$0” “$HERE/chrome” “$@” 后面加上 –user-data-dir –no-sandbox 。整条命令修改后为
exec -a “$0” “$HERE/chrome” “$@” –user-data-dir –no-sandbox
如图,将下图一改为下图二
接着依次按键盘 esc键, : 键 , w键,q键,然后回车(保存并退出)
二.安装Chrome驱动
一定要根据Chrome版本号安装驱动,由于我的Chrome版本为80.0.3987.132(版本一定要下对,否则Python运行会报错)。经测试,我应该下载官网的80.0.3987.16,而不是80.0.3987.106
电脑进入Chrome驱动官网 https://chromedriver.chromium.org/downloads
鼠标右键点击Linux版本,复制链接。(如,我的链接为https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_linux64.zip)
进入Centos,切换至系统根目录(注意,不是root根目录)。输入以下命令切换至Chrome安装目录
- cd /opt/google/chrome
wget + 上面复制的链接( 如,我的链接为https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_linux64.zip)
- wget https://chromedriver.storage...._linux64.zip
解压下载的zip
- unzip chromedriver_linux64.zip
此时驱动已安装完毕。
三.Python测试
在Linux下创建Python文件
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox') #让Chrome在root权限运行
chrome_options.add_argument('--disable-dev-shm-usage') #不打开图形界面
chrome_options.add_argument('--headless') #浏览器不提供可视化页面
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
chrome_options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/opt/google/chrome/chromedriver') #Chrome驱动的位置,此学习记录中安装到了Chrome程序根目录,该路径为绝对路径
driver.get('https://www.baidu.com')
content = driver.page_source.encode('utf-8')
print(content)
如返回百度的html源码,说明程序运行正常,能尽情在Linux使用selenium爬虫了
PS: 运行selenium如遇错误 error: DevToolsActivePort file doesn’t exist ,很可能是安装的Chrome驱动版本不对!
评论区欢迎分享你的学习记录和解决方法哦
生产环境下如何优雅地使用 Docker 运行宝塔面板?
Cyberbolt阅读 2.9k
超长溢出头部省略打点,坑这么大,技巧这么多?
chokcoco赞 14阅读 1.3k评论 3
学会了slidev.js的开发者, 也许可以考虑不用ppt了?
lulu_up赞 8阅读 1.3k
CSS 高阶小技巧 - 角向渐变的妙用!
chokcoco赞 7阅读 926
涨姿势了,殊途同归的图片交互动效制作!
chokcoco赞 7阅读 1.2k评论 2
基于Sanic的微服务基础架构
jysong赞 6阅读 3.9k评论 3
现代图片性能优化及体验优化指南
chokcoco赞 7阅读 1.4k评论 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。