索引
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 以避免版本不匹配问题。