要在 Debian 服务器上通过 Selenium 使用 Edge 浏览器,通常需要完成三个核心步骤:安装浏览器本体配置驱动 (EdgeDriver) 以及设置无头模式 (Headless)

以下是完整的实操步骤:


第一步:安装 Microsoft Edge 浏览器

由于 Debian 的官方软件源不包含 Edge,我们需要添加微软的官方存储库。

  1. 更新软件包并安装依赖:

    sudo apt update && sudo apt install -y software-properties-common apt-transport-https wget ca-certificates gnupg2
    
  2. 导入微软 GPG 公钥:

    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-edge.gpg > /dev/null
    
  3. 添加 Edge 软件源:

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-edge.gpg] https://packages.microsoft.com/repos/edge stable main" | sudo tee /etc/apt/sources.list.d/microsoft-edge.list
    
  4. 安装 Edge 浏览器:

    sudo apt update
    sudo apt install microsoft-edge-stable
    
  5. 验证版本:

    microsoft-edge --version
    

请记住输出的版本号(例如 120.0.2210.133),下一步下载驱动时需要匹配。


第二步:安装 WebDriver Manager (推荐)

在过去,你需要手动下载 msedgedriver 二进制文件。现在推荐使用 Python 的 webdriver-manager 库,它能自动识别浏览器版本并匹配驱动,省去了手动维护的麻烦。

安装相关 Python 库:

pip install selenium webdriver-manager

第三步:编写 Selenium 爬虫脚本

在服务器(尤其是没有显示器的云服务器)上运行 Edge,必须使用 --headless (无头模式)

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
from webdriver_manager.microsoft import EdgeChromiumDriverManager

# 1. 配置 Edge 选项
edge_options = Options()
edge_options.add_argument("--headless")  # 必须:无界面模式
edge_options.add_argument("--no-sandbox") # 必须:解决 Linux 环境下的权限问题
edge_options.add_argument("--disable-dev-shm-usage") # 必须:防止内存不足导致崩溃
edge_options.add_argument("--disable-gpu")

# 2. 自动安装并启动驱动
service = Service(EdgeChromiumDriverManager().install())
driver = webdriver.Edge(service=service, options=edge_options)

# 3. 测试运行
try:
    driver.get("https://www.bing.com")
    print(f"页面标题是: {driver.title}")
finally:
    driver.quit()

常见问题排查

  1. 缺少中文字体:
    如果爬虫抓取的网页截图全是方框(乱码),是因为服务器没装中文字体。

    sudo apt install fonts-wqy-zenhei
    
  2. 权限报错:
    如果在 root 用户下运行,请务必确保在 Options 中添加了 --no-sandbox 参数。
  3. 二进制文件路径:
    如果 webdriver-manager 无法自动找到 Edge,你可以手动指定路径:

    edge_options.binary_location = "/usr/bin/microsoft-edge"
    

标签: none

评论已关闭