在Windows上使用Selenium时,主要有三个步骤:

  1. 下载并按照Chrome浏览器。
  2. 下载并保存与Chrome相同版本的chromewebdriver
  3. 安装Python库selenium

大体而言,在Linux系统上也是这样的三个步骤。下面的代码是以Ubuntu 20.0.4LTS系统为例。

Linux命令行安装Chrome

如果是全新的系统,先运行下面的命令更新。

1
2
sudo apt update
sudo apt upgrade

依次运行如下代码安装Chrome浏览器。

1
2
3
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i ./google-chrome*.deb
sudo apt-get install -f

第2行命令运行完可能会有如下报错,直接运行第3行代码。

1
2
3
4
5
6
error processing package google-chrome-stable (--install):
 dependency problems - leaving unconfigured
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for man-db (2.9.1-1) ...
Errors were encountered while processing:
 google-chrome-stable

安装完成。

Linux安装webdriver

首先我们先确认下刚才安装的Chrome浏览器的版本。

1
google-chrome --version

我这里显示的结果是Google Chrome 89.0.4389.90 ,我需要去下载与Chrome版本一致的chromewebdriver。前往https://chromedriver.chromium.org/downloads找到对应版本的webdriver下载地址,然后复制下载链接。

1
2
3
cd /data/place-to-store
wget https://chromedriver.storage.googleapis.com/89.0.4389.23/chromedriver_linux64.zip
unzip chromedriver_linux64.zip

最后将webdriver移动到合适的存储位置(一般是推荐/usr/bin/),并给予可执行权限。

1
2
3
sudo mv chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver

安装Selenium

这个最简单,一行搞定:pip3 install selenium

Webdriver options

在Linux上有一些奇怪的错误,stackoverflow上有别人总结的可能避免问题的一些方式,全都加上都可以。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('start-maximized')
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument('--disable-browser-side-navigation')
chrome_options.add_argument('enable-automation')
chrome_options.add_argument('--disable-infobars')
chrome_options.add_argument('enable-features=NetworkServiceInProcess')

driver = webdriver.Chrome(executable_path=WEB_DRIVER_PATH, options=chrome_options)

以上步骤我亲自在重装后的Ubuntu20.0.4系统上测试过,确定可行。