🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant聚宽研究环境如何使用Selenium?(附chromedriver报错解析)

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

研究环境怎么使用selenium?

from selenium import webdriver
driver = webdriver.Chrome() # 创建一个Chrome浏览器对象

然后就报错了,WebDriverException: Message: 'chromedriver' executable needs to be in PATH.请问怎么回事呀

解决方案

报错原因解析

在 JoinQuant(聚宽)的研究环境中运行 selenium 并调用 webdriver.Chrome() 时,出现 WebDriverException: Message: 'chromedriver' executable needs to be in PATH. 的报错,主要原因如下:

  1. 缺少底层依赖:Selenium 驱动 Chrome 浏览器需要两个核心组件:Chrome 浏览器程序本身以及对应的 chromedriver 驱动文件。聚宽的研究环境是基于云端的 Linux 服务器(无图形界面),默认并没有预装 Chrome 浏览器和 chromedriver。
  2. 权限限制:由于云端环境的安全和资源隔离限制,普通用户没有 root 权限,无法通过 apt-get 等系统级命令自行安装 Chrome 浏览器和配置系统环境变量(PATH)。

因此,在聚宽的云端研究环境中,直接使用 Selenium 是行不通的


替代解决方案

如果您需要在量化策略中使用外部网页数据,建议采用以下几种替代方案:

方案一:使用 requests 库进行静态网页抓取

如果目标网站的数据是静态加载的,或者可以通过分析网络请求(Network 抓包)找到直接返回 JSON/HTML 数据的 API 接口,强烈建议使用 Python 内置支持的 requests 库。聚宽环境原生支持 requests

import requests

# 示例:抓取某个提供 JSON 数据的 API
url = 'https://api.example.com/data'
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)

if response.status_code == 200:
    data = response.json()
    print(data)

方案二:在本地运行 Selenium 并上传数据

如果目标网站的数据必须通过复杂的 JavaScript 动态渲染(必须使用 Selenium),您可以采取“本地抓取 + 云端读取”的策略:

  1. 本地抓取:在您自己的个人电脑上配置好 Python、Chrome 和 chromedriver,编写 Selenium 爬虫脚本,将抓取到的数据保存为 .csv.json 文件。
  2. 上传文件:将生成的数据文件手动上传到聚宽的“投资研究”根目录中。
  3. 云端读取:在聚宽的研究环境或回测代码中,使用 read_filepandas 读取该文件。
# 在聚宽研究环境中读取上传的 CSV 文件
import pandas as pd
from six import BytesIO

# 假设您上传的文件名为 my_data.csv
body = read_file("my_data.csv")
data = pd.read_csv(BytesIO(body))
print(data.head())

方案三:利用聚宽自带的丰富数据源(JQData)

在尝试自己爬取数据之前,建议先查阅 JoinQuant API 文档。聚宽已经提供了非常全面的金融数据,包括但不限于:

  • 行情数据get_price(), get_bars()
  • 财务数据get_fundamentals()
  • 宏观经济数据macro.run_query()
  • 龙虎榜、资金流向get_billboard_list(), get_money_flow()
  • 各类因子数据get_factor_values()

很多时候,您想爬取的数据可能聚宽 API 已经免费提供了,直接调用 API 不仅速度快,而且数据质量和稳定性远高于自行爬取。