一、安装Chrome浏览器
参考《Linux环境centos7系统,宝塔面板如何安装老版本谷歌chrome浏览器》
二、安装Selenium库
支持Python版本:Python 3.9+
-- 如果没有Python3,请运行下面命令安装Python3 sudo yum install epel-release //安装EPEL仓库 sudo yum install python3 //安装Python3 python3 --version //查看Python3版本 -- 安装Selenium类库 pip3 install selenium //安装最新版本,这里是4.25.0 pip3 install selenium==3.14.0 //指定低版本安装 pip3 uninstall selenium //卸载 pip3 show selenium //显示版本
如果是安装的最新版本,这里Selenium的最新版是4.30.0,则只继续步骤三
如果是安装的是低版本,这里Selenium的低版本是3.14.0,则只继续步骤四
三、安装webdriver_manager库
pip3 install webdriver-manager
测试脚本,保存为test.py,然后运行命令python3 test.py可以看到效果
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 使用webdriver_manager自动管理ChromeDriver版本,确保与你的Chrome浏览器版本相匹配
service = Service(ChromeDriverManager().install())
# 创建Chrome选项,并启用无头模式
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 启用无头模式
options.add_argument("--disable-gpu") # 适用于Linux系统,禁用GPU加速
options.add_argument("--no-sandbox") # 绕过沙盒模式(仅在Linux上需要)
options.add_argument("--disable-dev-shm-usage") # 绕过dev shm使用(仅在Docker容器中需要)
# 创建WebDriver实例
driver = webdriver.Chrome(service=service, options=options)
try:
# 打开一个网页
driver.get("https://www.baidu.com/")
# 进行一些操作,例如搜索
#search_box = driver.find_element_by_name('wd')
#search_box.send_keys('Selenium Chrome')
#search_box.submit()
#print(driver.title)
# 获取并输出网页的HTML内容
html_content = driver.page_source
with open('/home/wwwroot/testjs/output.html', 'w', encoding='utf-8') as file:
file.write(html_content)
print('网页内容已保存到 output.html')
#print(html_content)
# 等待一段时间(例如5秒)
import time
time.sleep(5)
finally:
# 关闭浏览器
driver.quit()
四、安装浏览器驱动程序Chromedriver,并配置PATH环境变量
114之前chromedriver驱动版本
官方:https://chromedriver.storage.googleapis.com/index.html
国内镜像:https://registry.npmmirror.com/binary.html?path=chromedriver/
115以后chromedriver驱动版本
国内镜像:https://registry.npmmirror.com/binary.html?path=chrome-for-testing/
这里我选择的是和已安装chrome浏览器相近版本124.0.6367.207,点击进入对应目录,下载chromedriver-linux64.zip到本地,然后解压文件,将里面的文件chromedriver传到服务器目录/usr/bin

-- 如果PATH环境变量正确,则可以查看到Chromedriver版本 chromedriver --version -- 如果不正确,可以通过下面方法,添加chromedriver对应的目录到环境变量中,比如 echo $PATH //查看有哪些目录在环境变量中 echo 'export PATH=$PATH:/path/to/driver' >> ~/.bash_profile source ~/.bash_profile
#Selenium 3 测试脚本
from selenium import webdriver
# 设置ChromeDriver的路径(如果已经添加到PATH则不需要这行)
webdriver_path = '/usr/bin/chromedriver'
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 启用无头模式
options.add_argument("--disable-gpu") # 适用于Linux系统,禁用GPU加速
options.add_argument("--no-sandbox") # 绕过沙盒模式(仅在Linux上需要)
options.add_argument("--disable-dev-shm-usage") # 绕过dev shm使用(仅在Docker容器中需要)
driver = webdriver.Chrome(executable_path=webdriver_path, options=options)
try:
# 访问网页
driver.get('https://www.baidu.com')
# 获取网页的HTML内容
html_content = driver.page_source
# 将HTML内容写入文件
with open('output.html', 'w', encoding='utf-8') as file:
file.write(html_content)
print('网页内容已保存到 output.html')
finally:
# 关闭浏览器
driver.quit()
#在Selenium 4之前这样设置ChromeDriver路径
from selenium import webdriver
driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver")
#在Selenium 4之后通过service参数来设置ChromeDriver路径
#步骤三里的测试脚本也可以改成下面的方法,则不用安装webdriver_manager库
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 创建Chrome选项,并启用无头模式
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 启用无头模式
options.add_argument("--disable-gpu") # 适用于Linux系统,禁用GPU加速
options.add_argument("--no-sandbox") # 绕过沙盒模式(仅在Linux上需要)
options.add_argument("--disable-dev-shm-usage") # 绕过dev shm使用(仅在Docker容器中需要)
service = Service('/usr/bin/chromedriver')
driver = webdriver.Chrome(service=service, options=options)
try:
# 打开一个网页
driver.get("https://www.baidu.com/")
# 获取并输出网页的HTML内容
html_content = driver.page_source
with open('/home/wwwroot/testjs/output.html', 'w', encoding='utf-8') as file:
file.write(html_content)
print('网页内容已保存到 output.html')
# 等待一段时间(例如5秒)
import time
time.sleep(5)
finally:
# 关闭浏览器
driver.quit()
相关问题链接:
TypeError: WebDriver.__init__() got an unexpected keyword argument ‘executable_path’报错解决方案

