一、前言
使用 selenium 的前提是 下载并安装一款 selenium 支持的浏览器和浏览器驱动,并且二者版本要一致,我这里安装的是 chrome 和 chromedriver
二、安装
1.lunix下的pip换源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
python -m pip install -U pip
2.安装selenium
pip install selenium
3.更新ubuntu
apt --fix-broken -y install
apt -y update
apt -y upgrade
4.安装谷歌浏览器
- 访问官网 https://www.google.cn/chrome/ 下载chrome
- 将页面拖至底部→其他平台→Linux
- 选择 .deb 文件→接收并安装
- 服务器创建 /ps/chrome 目录,将 .deb 文件上传至目录下
# 创建目录
mkdir -p /ps/chrome
# 手动上传 .deb 文件
- 安装 chrome
# 进入目录
cd /ps/chrome
# 安装依赖
apt -y install libxss1 libappindicator1 libindicator7
apt --fix-broken -y install
# 安装浏览器
dpkg -i google-chrome*.deb
# 查看版本
google-chrome --version
# Google Chrome 101.0.4951.64
5.安装chromedriver
-
根据上一步返回的 chrome 版本下载同版本的 chromedriver
访问国内镜像 https://registry.npmmirror.com/binary.html?path=chromedriver/ 下载
-
同样上传到 /ps/chrome 目录下
-
安装chromedriver
# 安装unzip
apt install unzip
# 解压
unzip chromedriver_linux64.zip
# 移动并创建软连接到默认路径,后续启动selenium时就不需要指定chromedriver的路径了
mv chromedriver /usr/local/share/chromedriver
ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
三、测试
创建测试文件 test_selenium.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
if __name__ == '__main__':
# 加载谷歌浏览器驱动
chrome_options = Options()
# linux下运行记得加上这些参数 ----------------------------
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
# -----------------------------------------------------
# 加载chromedriver -------------------------------------------------
# windows 下的 chromedriver 默认加载路径是当前路径下的 chromedriver.exe
# linux 下的 chromedriver 默认加载路径是 /usr/bin/chromedriver
# 当然也可以通过 executable_path 自定义
driver = webdriver.Chrome(options=chrome_options)
# -----------------------------------------------------------------
# 打开百度首页
driver.get('https://www.baidu.com/')
# 获取百度导航栏中的文本
xp = '//*[@id="s-top-left"]/a'
nav_list = [elm.get_attribute('text') for elm in driver.find_elements(by=By.XPATH, value=xp)]
print(nav_list)
# ['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘']
run一下
python test_selenium.py