空大

CentOS 7.X 版本安装 Chrome、Chromedriver 详细教程(114.0.5735.90 版本)

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

赞(0)
未经允许不得转载:剧搜博客 » CentOS 7.X 版本安装 Chrome、Chromedriver 详细教程(114.0.5735.90 版本)

评论 抢沙发

2 + 8 =