You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何部署Selenium脚本实现远程访问并输出提取的JSON数据

Heroku部署Selenium爬虫(输出JSON)实施方案

核心逻辑

将你的现有Selenium脚本封装为轻量HTTP接口,依托Heroku内置的无头Chrome和chromedriver支持完成部署,任意联网设备只需要发送HTTP请求即可触发爬取、获取返回的JSON结果,不需要安装任何额外依赖。

具体部署步骤

  • 首先配置Heroku应用的buildpack:添加三个官方维护的buildpack,分别对应Python运行环境、无头Chrome浏览器、匹配版本的chromedriver,平台会自动完成所有运行环境配置,无需手动安装依赖。
  • 调整Selenium启动参数适配Heroku运行环境,必须启用无头模式,示例配置如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os

chrome_options = Options()
# 启用新版无头模式
chrome_options.add_argument("--headless=new")
# 适配Heroku容器环境的必填参数
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")

# 驱动路径直接读取Heroku自动生成的环境变量即可,无需写死
driver = webdriver.Chrome(
    executable_path=os.getenv("CHROMEDRIVER_PATH"),
    options=chrome_options
)
  • 用Flask/FastAPI等轻量Web框架将脚本封装为HTTP接口,触发爬取逻辑后直接返回JSON结果,Flask示例代码如下:
from flask import Flask, jsonify
import os

app = Flask(__name__)
# 你的原有Selenium爬取逻辑,返回结构为可序列化的字典
def your_scraper_logic():
    # 原有爬取代码
    return {"data": "你的爬取结果"}

@app.route("/run", methods=["GET"])
def run_scraper():
    result = your_scraper_logic()
    return jsonify(result)

if __name__ == "__main__":
    # 读取Heroku分配的端口
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)
  • 配置项目启动文件:requirements.txt中添加所有依赖(比如selenium、flask、gunicorn),根目录新建Procfile文件,内容为web: gunicorn app:app,用生产级服务器启动服务。

数据处理可选方案

  • 单次爬取结果小于1MB的场景:直接通过接口响应实时返回JSON即可,调用端直接解析HTTP响应体就能拿到结果,不需要额外存储。
  • 数据量较大或需要留存历史数据的场景:
    • 可以将结构化数据存入Heroku自带的Postgres数据库,JSON格式内容可以直接存在JSON字段中,需要时可随时查询导出。
    • 若需要保留原生JSON文件,可在爬取完成后生成临时下载链接,调用端直接下载即可,注意Heroku Dyno的临时文件系统会在实例重启后清空,需要长期存储的话建议存到数据库中。

远程调用方式

部署完成后你会拿到Heroku分配的服务域名,任意联网设备无需安装webdriver、Docker,直接发送HTTP请求即可调用,示例curl命令如下:
curl https://<你的Heroku应用域名>/run

内容的提问来源于stack exchange,提问作者user16241255

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:42:02