原文 https://www.cyberlight.xyz/passage/python3-selenium-linux
最近尝试在服务器端运行selenium,做下此笔记,其间参考了大量相关教程,感谢每一位共享学习记录的网友!
由于windows10使用的Chrome,我继续尝试在CentOS运行,终于成功!以下是学习记录:
环境:CentOS8, Python 3.6.8
一.CentOS上安装Chrome
请确保身份为root,进入CentOS终端,然后依次输入
wget https://dl.google.com/linux/direct/google-chrome-stable_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” + “:” + “wq” 保存并退出
二.安装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.googleapis.com/80.0.3987.16/chromedriver_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驱动版本不对!
评论区欢迎分享你的学习记录和解决方法哦