针对在无图形界面的服务器上运行selenium,抓取数据。以此记录selenium环境部署:
1.服务器上的环境
所需清单:python3、pip3、Chrome(本文以Chrome为例)、chromedriver
关于python3和pip3的安装自行百度,教程网上一大把。这里主要讲selenium,所以不详述。
Chrome安装:
# 输入
sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/
# 输入
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
# 输入
sudo apt-get update
# 输入
sudo apt-get install google-chrome-stable # 这里安装的是稳定版,有需要安装其它版本的自行百度
测试安装是否成功:
/usr/bin/google-chrome-stable --no-sandbox
# 结果
[1126/155333.216447:ERROR:nacl_helper_linux.cc(310)] NaCl helper process running without a sandbox!
Most likely you need to configure your SUID sandbox correctly
Chromedriver安装:
此处注意:chrome的版本一定要和chromedriver的版本相匹配,否则会报错。
chromedriver下载地址:
http://npm.taobao.org/mirrors/chromedriver/
区分是否最新版本的chromedriver看上传日期,一般来说最新版的chrome对应最新版的chromedriver是没问题的,如果需要其他版本及对应关系自行百度。
选择到合适的版本后,右键->复制链接
# 把链接中的文件下载到当前目录
wget http://npm.taobao.org/mirrors/chromedriver/2.44/chromedriver_linux64.zip
# 解压
unzip chromedriver_linux64.zip
# 将解压后的chromedriver移动到 /usr/bin/
mv chromedriver /usr/bin
# 测试chromedriver是否可以正常运行
chromedriver
Starting ChromeDriver 2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634) on port 9515
Only local connections are allowed.
[1543219624.933][SEVERE]: bind() returned an error, errno=0: Cannot assign requested address (99)
到这里完成安装:python代码里相关设置
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver',
chrome_options=options)