索引
Google Chrome 和 chromedriver 在自动化测试、网页爬取以及远程浏览器操作等场景中广泛应用。然而,在 centos 7.X 上安装特定版本的 Chrome 和 Chromedriver 可能会遇到依赖问题,尤其是由于 CentOS 7 自带的软件仓库较老,缺乏一些必要的库。本文详细介绍如何在 CentOS 7.X 上安装 Google Chrome 114.0.5735.90 及匹配版本的 Chromedriver,并提供相关配置方法。
安装 Google Chrome 114.0.5735.90
运行以下命令:
wget https://mirrors.aliyun.com/google-chrome/google-chrome/google-chrome-stable-114.0.5735.90-1.x86_64.rpm
来源 https://mirrors.aliyun.com/google-chrome/google-chrome/
然后运行以下命令:
sudo yum localinstall -y google-chrome-stable-114.0.5735.90-1.x86_64.rpm
这边注意到,有人可能会遇到错误:
Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64
这是由于 CentOS 7 官方仓库已失效(CentOS 7 已于 2024 年 6 月 30 日进入维护模式),无法解析 mirrorlist.centos.org,所以 yum 源配置错误,指向了无效的镜像地址。
解决方法找到路径:/etc/yum.repos.d
然后找到 CentOS-SCLo-scl.repo 文件并开启它
将以下其中的仓库禁用,禁用方式就是在每一行的最前面加上 #
#[centos-sclo-sclo] #name=CentOS-7 - SCLo sclo #baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/sclo/ #mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo #gpgcheck=1 #enabled=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
保存文件之后,接着运行:
yum makecache
等它更新完库之后,再次运行:
sudo yum localinstall -y google-chrome-stable-114.0.5735.90-1.x86_64.rpm
好了以后,运行以下命令,检查安装是否有成功:
google-chrome --version
接着建立软链接:
sudo ln -s /usr/bin/google-chrome-stable /usr/local/bin/chrome
再次运行检查是否正确显示版本:
chrome --version
安装 Chromedriver 114.0.5735.90
运行以下命令:
wget https://registry.npmmirror.com/-/binary/chromedriver/114.0.5735.90/chromedriver_linux64.zip
来源 https://registry.npmmirror.com/binary.html?path=chromedriver/114.0.5735.90/
然后将压缩包进行解压缩:
unzip chromedriver_linux64.zip
移动执行文件:
sudo mv chromedriver /usr/local/bin/
给予权限:
sudo chmod +x /usr/local/bin/chromedriver
检查版本:
chromedriver --version
测试 Chrome 和 Chromedriver
可以使用 Python 的 selenium 库进行测试,以确保 Chrome 和 Chromedriver 配置正确。
安装 selenium:
pip3 install selenium
创建一个 python 脚本,以 transfer.py 为例:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import os
import json
import datetime
import time
# 指定 chromedriver 路径
chromedriver_path = '/usr/local/bin/chromedriver'
# 设置 chrome 路径
os.environ["GOOGLE_CHROME_BIN"] = "/usr/local/bin/chrome" # 设置 Google Chrome 路径
# 配置 Chrome 选项
options = Options()
options.add_argument('--headless') # 开启无头模式
options.add_argument('--disable-gpu') # 禁用 GPU 加速
options.add_argument('--no-sandbox') # 禁用沙盒模式
options.add_argument('--remote-debugging-port=9222') # 指定调试端口
options.binary_location = os.environ["GOOGLE_CHROME_BIN"] # 使用环境变量设置浏览器路径
# 启动 Chrome 浏览器
driver = webdriver.Chrome(executable_path=chromedriver_path, options=options)
# 目标 URL
base_url = "http://nba.titan007.com/ZH/ZhList_cn.aspx"
# 存储所有转会数据
transfer_data = []
try:
# 打开目标页面
driver.get(base_url)
current_page = 1 # 当前页数
while True:
print(f"Fetching page {current_page}...")
# 查找表格行
rows = driver.find_elements(By.CSS_SELECTOR, "table.tdlink tr")[1:] # 跳过表头
for row in rows:
cols = row.find_elements(By.TAG_NAME, "td")
if len(cols) >= 6: # 确保数据完整
transfer_data.append({
"transfer_date": cols[0].text.strip(),
"player_name": cols[1].text.strip(),
"position": cols[2].text.strip(),
"new_team": cols[3].text.strip(),
"old_team": cols[4].text.strip(),
"transfer_type": cols[5].text.strip(),
})
# 查找分页区域
pager = driver.find_element(By.ID, "AspNetPager1")
next_button = pager.find_element(By.LINK_TEXT, "下一页")
last_button = pager.find_element(By.LINK_TEXT, "尾页")
# 检查是否禁用“下一页”按钮,判断是否为最后一页
if 'disabled' in next_button.get_attribute("outerHTML") or 'disabled' in last_button.get_attribute("outerHTML"):
print("No more pages or the 'next' button is disabled.")
break # 结束抓取
# 如果下一页按钮存在且未被禁用,点击它
next_button.click()
time.sleep(3) # 增加等待时间,确保页面加载
current_page += 1 # 增加页数
print(f"Moving to page {current_page}...")
except Exception as e:
print(f"Error during fetching: {e}")
finally:
driver.quit()
# 保存数据为 JSON 文件
output = {
"timestamp": datetime.datetime.now().isoformat(),
"transfers": transfer_data,
}
output_file = "/home/www/wp/nba/wp-content/plugins/my-cron-job/transfers.json" # 替换为实际保存路径
with open(output_file, "w", encoding="utf-8") as f:
json.dump(output, f, ensure_ascii=False, indent=4)
print(f"Data successfully saved to {output_file}")
然后运行测试 transfer.py:
python3 transfer.py


通过上述步骤,我们成功在 CentOS 7.X 上安装了 Google Chrome 114.0.5735.90 及对应的 Chromedriver,并通过 selenium 进行了测试验证。如果后续 Chrome 版本需要更新,建议同步更新 Chromedriver 以避免版本不匹配问题。

剧搜博客