Python3 selenium在CentOS服务端运行

2020-04-21 10:19:49   Cyberbolt

最近尝试在服务器端运行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键, : 键 , 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.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驱动版本不对!

评论区欢迎分享你的学习记录和解决方法哦

loveawake.ru
2022-02-22 05:22:11

Welcome to the world of adult Dating loveawake.ru