在Windows上使用Selenium时,主要有三个步骤:
- 下载并按照Chrome浏览器。
- 下载并保存与Chrome相同版本的
chromewebdriver
。
- 安装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系统上测试过,确定可行。